【发布时间】:2025-12-18 20:15:03
【问题描述】:
我在 SQLite 中有以下场景。
TableA
ID
-----
1 |
2 |
3 |
Table B
ID | AID |Tag
----------------
1 | 1 | Hide
2 | 1 | Show
3 | 2 | Null
4 | 3 | Show
表 B 有 AID 列,即表 A 的 ID。
在上面的例子中 表 A ID: '1' 有 -> '1' 和 '2' 的表 B ID 以及附加的标签 'Hide' 和 'Show'。
在上面的示例中,我正在寻找一个仅返回表 A ID:“2”和“3”的 SQL。 基本上,由于 TableA ID: '1' 附加了一个 'Hide' 标签,所以不要返回它(即使它也附加了一个 show 标签)
我使用的 SQL 是(请原谅名字,这只是一个简单的例子)
select
a.ID as a_ID,
b.ID as b_ID,
b.Tag as Tag
from
Table A as a
left join Table B on a.id = b.aID
and b.tag != 'hide'
此 SQL 的问题仍在返回
a_ID | b_ID | Tag
-------------------------------
1 | 2 | Show
我有点卡住,任何帮助将不胜感激。我不是 100% 确定我将如何在谷歌搜索中使用它。 我得到的最接近的是这个问题How to return only 1 row if multiple duplicate rows and still return rows that are not duplicates? 但我不知道 GROUP BY 在这里有什么帮助。
【问题讨论】:
-
试试
select ... where AID not in (select AID from B where Tag = 'Hide')
标签: sql sqlite select join distinct