错误:操作数应包含1列

时间:2019-12-02 05:25:00

标签: mysql

我想使用下面的代码从数据库中选择一组数据。

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列。

我需要更改什么吗?

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值的每个记录的状态归零。