2014-02-27 61 views
0

我需要更新,如果條件滿足,在我的情況表:(從標題的帖子組SELECT COUNT(標題)標題)> 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; 

我在做什麼錯在這裏?提前致謝。

回答

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 
+0

非常感謝。它的作品,現在我明白了這個問題! –

+2

如果戈登爵士給你正確的答案,請注意檢查答案。 – Charlesliam

-4

在子查詢使用組中,因爲您正在使用計數功能

+2

他們已經在使用GROUP BY了,實際上對此沒有幫助。他們在特定情況下所需要的是與主要陳述(UPDATE)的相關性。 –

相關問題