我尝试了几个小时,读了许多帖子,但仍然不知道如何处理此请求:
我有一张这样的桌子:
+------+------+------+
|PERSON|TRTYPE| ID |
+------+------+------+
|JERRY | I | 2 |
+------+------+------+
|JERRY | U | 2 |
+------+------+------+
|TOM | U | 2 |
+------+------+------+
|SPIKE | I | 3 |
+------+------+------+
|SPIKE | U | 3 |
+------+------+------+
我想选择一个ID为TRTYPE的 PERSON ID ,但对于同一ID他的TRYPE却不为I。
输出应类似于:
+------+------+
|PERSON| ID |
+------+------+
|TOM | U |
+------+------+
因为TOM是唯一在未执行I的TRTYPE的ID上执行过U型的人
答案 0 :(得分:2)
使用聚合和/etc/passwd
:
having
答案 1 :(得分:1)
您可以像下面的查询中那样使用NOT EXISTS
SELECT * FROM yourtable A WHERE A.TRTYPE ='U'
AND NOT EXISTS
(
SELECT 1 FROM yourtable T WHERE T.TRTYPE ='I'
AND T.PERSON=A.PERSON AND T.ID=A.ID
)
答案 2 :(得分:0)
假设您的表名为[table_1],
SELECT [PERSON], [ID] FROM [table_1] t1
WHERE (SELECT COUNT(*) FROM [table_1] t2 WHERE t2.[PERSON] = t1.[PERSON] AND t2.[TRTYPE] = ‘I’) = 0
答案 3 :(得分:0)
您可以使用“通用表表达式”破坏逻辑并按以下方式获得结果
console.log(e)