MySQL查询帮助 - 仅为用户提供新项目

时间:2013-08-02 17:01:59

标签: mysql sql

如何提取仅包含新项目的用户列表?

我尝试了这个查询。 。 。 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; 但迈克表示迈克在输出中也因为他有一辆新车,但我只希望用户拥有全新的汽车。

2 个答案:

答案 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')