(对不起标题的措辞。)
我有以下SQL查询来检索我想要的所有行:
SELECT
app_activity.name
FROM
app_chatmessage
JOIN
app_activity ON app_chatmessage.activity_id = app_activity.id
GROUP BY
app_activity.name
HAVING
COUNT(app_chatmessage.owner_id) = 1;
现在,表格app_chatmessage
也有一列seen
。对于上述查询返回的所有行,我想将此列设置为FALSE
。我该怎么做?
答案 0 :(得分:3)
试试这个
Update app_chatmessage set seen='FALSE' where
activity_id in
(
SELECT
app_activity.id
FROM
app_chatmessage
JOIN
app_activity ON app_chatmessage.activity_id = app_activity.id
GROUP BY
app_activity.name
HAVING
COUNT(app_chatmessage.owner_id) = 1
);
答案 1 :(得分:0)
尝试低于一个
WITH CTE AS ( SELECT
app_activity.name, SEEN, COUNT(app_chatmessage.owner_id) over(partition by app_activity.name order by app_activity.name) CNT
FROM
app_chatmessage
JOIN
app_activity ON app_chatmessage.activity_id = app_activity.id
)
UPDATE CTE
SET SEEN = FALSE
WHERE CNT =1