【问题标题】:Show only consistent records仅显示一致的记录
【发布时间】:2015-10-29 02:33:31
【问题描述】:

我有这张桌子:

item_number     item        owner_id       status
-----------     ----        --------       ------

12648        Powerbank        5569        returned
657891       Flash drive      5569        returned
6326         Wireless Mouse   5569        sold
987998       Pocket Wifi      8897        sold
78134        Wireless Mouse   7741        sold
7845159      Keyboard         1598        sold
87513        Monitor          1598        sold
9841523      Speakers         8965        returned

我希望结果是这样的:

item_number     item        owner_id       status
-----------     ----        --------       ------
987998       Pocket Wifi      8897        sold
78134        Wireless Mouse   7741        sold
7845159      Keyboard         1598        sold
87513        Monitor          1598        sold

所以,基本上,我想要的是提取一直销售物品的所有者。一旦用户有一个返回的项目,那么他不应该出现在结果中。

谁能帮我解决这个问题?

非常感谢!

【问题讨论】:

  • 结果中item_number的逻辑是什么?

标签: mysql


【解决方案1】:

如果您想为从未返回任何内容的所有者提供所有行,请使用not exists 子句:

select t.*
from table t
where not exists (select 1
                  from table t2
                  where t2.owner_id = t.owner_id and t2.status <> 'sold'
                 );

如果您只想要所有者列表,那么我会使用聚合和having

select owner_id
from table t
group by owner_id
having sum(status <> 'sold') = 0;

【讨论】:

    猜你喜欢
    • 2013-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-11
    • 2020-04-03
    相关资源
    最近更新 更多