我想使用下面的代码从数据库中选择一组数据。
SELECT * FROM History INNER JOIN (SELECT MAX(id) as id FROM History GROUP BY home_id)
last_updates ON last_updates.id = History.id
结果是,我得到了一组数据。然后我想根据数据组更新表上的字段,并使用以下代码。
UPDATE History SET status = '0' WHERE
(SELECT * FROM History INNER JOIN (SELECT MAX(id) as id FROM History GROUP BY home_id)
last_updates ON last_updates.id = History.id)
我认为我的sql更新代码是正确的,但是我知道了
错误:操作数应包含1列。
我需要更改什么吗?
答案 0 :(得分:1)
尝试更新自我加入:
UPDATE History h1
INNER JOIN
(
SELECT home_id, MAX(id) AS max_id
FROM History
GROUP BY home_id
) h2
ON h1.home_id = h2.home_id AND
h1.id = h2.max_id
SET
h1.status = 0;
这假设您想将每个home_id
组中具有最大id
值的每个记录的状态归零。