我有一个功能正常的表,我在表中添加了一列。添加列后,我希望将查询结果(查询对于除了不同结果之外的所有结果相同)一次性添加到该列中,而不是一次一个,这将是耗时的。我怎样才能实现这一目标?更新后的Cos,我在所有列中只有一个结果,我不能使用where子句因为它将要求我一个接一个地执行它
$stmt = $pdo->prepare("UPDATE table SET my_value = '$myValue' ");
$stmt->execute();
答案 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将起作用。