一次插入所有记录

时间:2015-04-10 10:53:07

标签: php mysql

我有一个功能正常的表,我在表中添加了一列。添加列后,我希望将查询结果(查询对于除了不同结果之外的所有结果相同)一次性添加到该列中,而不是一次一个,这将是耗时的。我怎样才能实现这一目标?更新后的Cos,我在所有列中只有一个结果,我不能使用where子句因为它将要求我一个接一个地执行它

$stmt = $pdo->prepare("UPDATE table SET my_value = '$myValue' ");
$stmt->execute();

3 个答案:

答案 0 :(得分:1)

UPDATE table 
SET my_value = (select col from some_table where ...)

答案 1 :(得分:1)

如果所有行的值相同,我建议使用cross join

update table t cross join
       (select newval . . .) x
    set t.col = x.newval;

注意:这比子查询更好,因为子查询只能被评估一次。

如果您尝试说明 groups 列的值相同,请将其扩展为join

update table t join
       (select grp, newval . . .) x
       on t.grp = x.grp
    set t.col = x.newval;

答案 2 :(得分:0)

  

添加列后,我想添加查询结果(查询   所有的结果都是相同的,而不是一个在   这个时间非常耗时。

解决方案取决于您的意思"所有行都是相同的。"

如果您有一个对所有列完全相同的值,您可以直接询问它然后更新。与使用纯SQL实现一切相比,这通常更快(并且允许您更容易调试)。

另一方面,如果您的意思是该列的值由同一查询检索,但对于不同的行将是不同的,那么子查询或交叉连接为Gordon suggested将起作用。