mysql 定义变量

我想把一个select语句的结果存在一个变量中
然后再用这个变量放在一个insert语句里
比如
变量 = select xxx from xxx;
insert into xxx values(xxx,xxx,变量)
具体要怎么写?之前写
@ID = select dir_id from directory_tbl;
insert into directory_tbl values(xxx,xxx,xxx,xxx,ID);
提示错误,@ID也提示错误

在PHP、C++等语言里面可以使用变量,在存储过程里面可以使用变量,SQL语句里面不能使用变量的。

不过你的要求可以用下面的一个SQL语句实现:
insert into YYY表(字段1,字段2,字段3) SELECT 字段1,表达式2,常量3 FROM XXX表

注意:上面是两个表,一般不允许同时对一个表进行操作,如果是一个表,你可以考虑使用临时表:

SELECT 字段1,表达式2,常量3 FROM XXX表 INTO TEMP TMP表;
insert into YYY表(字段1,字段2,字段3) SELECT * FROM TMP表;
温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-02-17
下面是一个简单的
存储过程的例子.
declare
v_index
int;
定义一个
名称为
v_index
的变量,
类型为
int
mysql
变量定义应该只能在
存储过程,
函数里面定义.
不像
oracle
/
sql
server

一个
begin
/
end
里面就可以定义/执行了。
mysql>
delimiter
//
mysql>
create
procedure
testwhile()
->
begin
->
declare
v_index
int;
->
->
set
v_index
=
0;
->
->
while
v_index
<
5
do
->
set
v_index
=
v_index
+
1;
->
select
v_index;
->
end
while;
->
->
end//
query
ok,
0
rows
affected
(0.00
sec)
第2个回答  2010-02-10
比如你的user表里有name pwd age三个字段
table表里有name pwd age 三个字段
<?
$sql_sel=select * from user;
$query_sel=mysql_query($sql);//执行sql语句并获得一个结果集
$res=mysql_fetch_array($query); //把结果集转化成数组

//然后按照对应的键名
$sql_ins=insert into table value('.$res[name].','.$res[pwd].','.$res[age].');
$query_ins=mysql_query($sql_ins);

?>
第3个回答  2010-02-10
insert into directory_tbl 字段1,字段2,字段3(变量值)
select 值1,值2,结果字段 from xxx where ?
相似回答