如何提取仅包含新项目的用户列表?
我尝试了这个查询。 。 。 SELECT * FROM items where status ='new'GROUP BY item_owner; 但迈克出现在输出中,因为他也有一辆新车,但我只希望用户只有新车。
Table 1
------------------------------------------------------------
Table: User_Profiles
Id username
1 mike
2 jim
Table 2
------------------------------------------------------------
Table: Items
Id item status item_owner
1 car new mike
2 car old mike
3 car new jim
4 car new jim
我尝试了这个查询。 。 。 SELECT * FROM items where status ='new'GROUP BY item_owner; 但迈克表示迈克在输出中也因为他有一辆新车,但我只希望用户拥有全新的汽车。
答案 0 :(得分:1)
以下是一种方式:统计旧的和新的,然后包括(a)一个或多个new
和(b)零old
的任何人:
SELECT item_owner
FROM Items
GROUP BY item_owner
HAVING COUNT(CASE WHEN status = 'new' THEN 1 END) > 0
AND COUNT(CASE WHEN status = 'old' THEN 1 END) = 0
答案 1 :(得分:0)
以下是修订后的SQL小提琴http://sqlfiddle.com/#!2/038e7/4
关键是要排除所有状态不是“新”的所有者
SELECT DISTINCT i.item_owner
FROM items i
where not exists (select 1
from items i2
where i2.item_owner = i.item_owner
and i2.status <> 'new')