我有一个orders
表格如下:
id | cust_id| status
1 25 1
2 25 1
3 25 0
4 26 0
5 26 1
6 26 0
7 27 1
8 27 1
9 27 1
我需要两个查询:
1。获取所有' cust_id'至少有一个状态为0。
例如。在上面的表中,我应该得到cust_id,其中包含两行25和26,因为它们至少有一个0的状态'列。
2。获取所有' cust_id'拥有所有状态1。
例如。在上面的表格中,我应该得到一行27的cust_id,因为它具有处于“状态”状态的所有1#。专栏。
答案 0 :(得分:1)
假设状态为数字
select distinct cust_id
from my_table where status = 0
select disctint cust_id
from my_table
where cust_id NOT in (select distinct cust_id
from my_table where status = 0 )
这是两个查询..
如果您需要两个结果相同的选择,您可以使用union
select distinct cust_id
from my_table where status = 0
union
select disctint cust_id
from my_table
where cust_id NOT in (select distinct cust_id
from my_table where status = 0 )
答案 1 :(得分:0)
SELECT DISTINCT cust_id FROM orders WHERE status=0
UNION
SELECT DISTINCT cust_id FROM orders WHERE status=1
AND cust_id NOT IN (SELECT cust_id FROM orders WHERE status<>1)