从多行MySql中只选择一行

时间:2017-02-14 13:09:25

标签: mysql

我有一个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#。专栏。

2 个答案:

答案 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)