将两个查询合并为一个需要第一个查询中的值的查询

时间:2012-09-29 22:35:10

标签: php mysql

我有两个SQL查询:

$res1 = mysql_query("SELECT * FROM `table1` WHERE `user`='user'");
$i = mysql_fetch_assoc($res1);    
$value1 = $i['num'];

$res2 = mysql_query("INSERT INTO `table2` (`name`,`num`) VALUE ('name','$value1')");

如何将两个SQL查询合并为一个?我需要从第一个请求的第二个查询中获取变量的值。有可能吗?

3 个答案:

答案 0 :(得分:4)

这个带有子查询的查询应该很适合你:

insert into table 2 (`name`, `num`) 
    values ('name', (select `num` from table1 where `user`='user'));

这假设您没有使用第二个查询中的num以外的任何内容,因为它似乎没有在您的原始代码中使用。

编辑:另外,我看到这是一个插入,而不仅仅是一个select语句,但是你可能会从阅读一个相当冗长的question and answer中获益,它覆盖了多个表和覆盖联合,连接的SQL ,子查询和更多的东西。

答案 1 :(得分:4)

你能使用INSERT INTO ... SELECT ...语法吗?

E.g。类似的东西:

INSERT INTO table2 (name, num)
SELECT 'name', num
FROM table1
WHERE user='user' 

(未经测试,请在此原谅任何小错误......)

答案 2 :(得分:0)

报废。

最好的答案是让PHP拥有MYSQL所需的数据。以任何其他方式执行将导致瓶颈并且效率低下。