我对请求有点迷茫,这是我的表模式
id PK tickets_id 输入
让我说这些行
id tickets_id type
75 55 1
76 55 2
77 56 1
78 56 2
79 56 3
80 58 1
81 59 1
82 59 2
我需要在另一行中列出所有没有类型'2'但只有1或3的tickets_id
所以这里只列出tickets_id 58
不要求完整的解决方案,只是一点点的跟踪,我不知道如何开始:/
谢谢。
答案 0 :(得分:1)
不存在
pg_user
答案 1 :(得分:1)
您可以简单地使用MySQL NOT IN
函数:
SELECT DISTINCT tickets_id
FROM t
WHERE tickets_id NOT IN (
SELECT tickets_id
FROM t
WHERE type = 2
)
答案 2 :(得分:0)
让我们假设您桌子的名字是票证
SELECT *
FROM tickets
WHERE tickets_id NOT IN (
SELECT tickets_id FROM tickets
WHERE type=2
)
答案 3 :(得分:0)
如果只需要ticket_id
,请使用聚合:
select tickets_id
from t
group by tickets_id
having sum( type = 2 ) = 0; -- no type 2s
大概其余的值是1s和3s。如果要显式添加此条件,请使用:
select tickets_id
from t
where type in (1, 2, 3)
group by tickets_id
having sum( type = 2 ) = 0; -- no type 2s
如果您想要所有票证ID,甚至不需要这些表中的票证ID,那么我假设您有另一张表,每tickets_id
有一行。在这种情况下,我建议使用not exists
:
select ts.*
from tickets ts
where not exists (select 1
from t
where t.tickets_id = ts.tickets_id and t.type = 2
);