【发布时间】:2015-01-08 06:25:53
【问题描述】:
我正在像这样的 mysql 中运行更新查询。它旨在更新 mytable 中记录 5 的 mycount 和 mysum 列当且仅当 mycount 为空。
如果它不为空,则没有要更新的行,但子查询仍会运行,这很昂贵。有什么方法可以创建一个查询,如果有什么要更新的,只会运行子查询?
UPDATE mytable
CROSS JOIN (
SELECT COUNT(*) thiscount, SUM(mycolumn) thissum
FROM(
SELECT mycount, mysum
FROM <some complicated query>
)t
)t2
SET mycount=thiscount,
mysum=thissum
WHERE id=5;
AND mycount IS NULL;
【问题讨论】:
-
有什么原因你不能在更新之前做一个
SELECT COUNT(*) FROM mytable WHERE id=5 and mycount IS NULL,从而验证该行应该被更新吗?
标签: mysql sql optimization subquery