【问题标题】:SQL WHERE 表中的所有连接记录都不符合某些条件?
【发布时间】:2022-01-23 05:28:00
【问题描述】:

我有一张桌子

表1

ID
Cat
Dog
Rabbit

还有一张桌子

表2

ID Action
Cat Eat
Cat Sleep
Cat Poop
Dog Eat
Dog Sleep
Rabbit Eat

我想找出哪个动物没有睡觉 - 但是当我在 ID = ID 的 table2 上加入 table1 并过滤操作 'Sleep' 的时间时,我仍然得到 Rabbit 的记录,因为 Sleep Eat。

我想在table2上join table1,查看join中的所有记录,如果没有记录=Sleep,则返回ID。

如果我们不寻找睡眠,我想退回兔子,不寻找便便退回狗和兔子

【问题讨论】:

  • 你用的是什么关系型数据库?
  • @Zaki Sql 服务器管理工​​作室 2016
  • 样本数据很好,但您也应该指定预期结果。
  • @Zaki Sql Server Management Studio 不是 RDBMS。
  • 根据问题指南,请展示您的尝试并告诉我们您发现了什么(在本网站或其他地方)以及为什么它不能满足您的需求。

标签: sql sql-server tsql


【解决方案1】:

您似乎只需要一个not exists 条件,请尝试以下操作

select id
from table1 t1
where not exists (
  select * from table2 t2 
  where t2.id = t1.id and t2.action = 'sleep'
);

【讨论】:

  • 这就是答案!谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-29
  • 1970-01-01
  • 1970-01-01
  • 2011-12-17
  • 1970-01-01
相关资源
最近更新 更多