SQL选择在另一列中至少具有一个特定值的所有非唯一行

时间:2015-10-05 23:58:03

标签: mysql

感谢您的观看。我很难搞清楚SQL调用,它将识别所有完整的订单,并在Color列中至少有一个值为'Red'的实例。同样,我希望它包含符合条件的订单的所有行。谢谢!

Order    Color
1        Red
1        Blue
1        Yellow
2        Red
2        Black
3        Blue
3        Green
3        Pink

1 个答案:

答案 0 :(得分:0)

有很多方法可以做到这一点,例如你可以使用in谓词:

select * 
from your_table
where `Order` in (
    select `Order` 
    from your_table 
    where Color = 'Red'
)

或者您可以将exists谓词与相关查询一起使用:

select * 
from your_table t1
where exists (
    select 1 
    from your_table t2 
    where t2.Color = 'Red' 
      and t1.`Order` = t2.`Order`
    )

两个查询都会返回:

Order   Color
1       Red
1       Blue
1       Yellow
2       Red
2       Black

旁注order是ANSI SQL标准中的保留关键字,因此不是列的良好名称。