0

如何提取只有新项目的用户列表?

我试过这个查询。. . SELECT * FROM items where status = 'new' GROUP BY item_owner; 但是 mike 出现在输出中是因为他也有一辆新车,但我只希望用户只拥有新车。

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; 但是 mike show mike 在输出中,因为他也有一辆新车,但我只希望用户拥有新车。

4

2 回答 2

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
于 2013-08-02T17:06:49.043 回答
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')
于 2013-08-02T17:09:18.263 回答