在满足条件时使用大小写更新

时间:2014-02-27 02:43:06

标签: mysql sql

如果符合条件,我需要更新表格,在我的情况下:(根据标题从帖子组中选择计数(标题)作为标题)> 1。

这是我的查询不起作用,我无法弄清楚该怎么做。

UPDATE posts SET text= CASE
WHEN (select count(title) as title from posts group by title) > 1 THEN 'Y' ELSE 'N'
END
WHERE id <=8;

我在这里做错了什么?提前谢谢。

2 个答案:

答案 0 :(得分:4)

查询的问题在于标量子查询中有group by。这会导致标量子查询有多行,这会导致错误。我不知道表的布局,但也许你想使用相关的子查询:

UPDATE posts p
    SET text = (CASE WHEN (select count(title) from posts p2 where p.title = p2.title) > 1
                     THEN 'Y'
                     ELSE 'N'
                END)
    WHERE id <= 8;

编辑:

您还可以使用join

表达此查询
UPDATE posts p join
       (select title, count(*) as cnt
        from posts p
        group by title
       ) pt
       on p.title = pt.title
   set  p.test = (case when cnt > 1 then 'Y' else 'N' end)
   where id <= 8

答案 1 :(得分:-4)

在子查询中使用group by,因为您正在使用count函数