如果OTHER记录不匹配,MySQL选择记录

时间:2009-05-01 14:50:10

标签: mysql

我有一张桌子,每人每件衣服有一条记录

所以

peter, jumper,blue
peter,trousers,green
sue,dress,green
peter,jumper,red
gordon,jumper,green

我想写一个查询来选择所有绿色跳线的人,但前提是他们没有其他颜色的跳线

所以在上面的情况下,它只会选择戈登而不是贪婪的老彼得

可能吗?

3 个答案:

答案 0 :(得分:4)

这应该可行,但未经测试。语法也可能有些偏差,因为我脑子里仍然有Firebird SQL,但你应该得到一般的想法:

SELECT *
FROM myTable AS t1
WHERE t1.clothing = 'jumper' AND t1.color = 'green' 
AND NOT EXISTS(SELECT *
               FROM myTable AS t2
               WHERE t2.person = t1.person AND t2.clothing = 'jumper'
               AND t2.color <> 'green')

答案 1 :(得分:1)

我必须去参加一个会议,但CASE声明可能会帮助你。

MySQL CASE statement

答案 2 :(得分:1)

SELECT *
FROM MyTable t1
WHERE Color = 'green'
AND NOT EXISTS (
    SELECT 1 
    FROM MyTable
    WHERE Color <> 'green'
    AND PersonName = t1.PersonName
)