什么是正确的查询才能从表中获得以下结果

时间:2019-04-11 06:24:31

标签: mysql sql

我正在尝试编写查询来解决以下问题:

我有一个名为kids的表,其中有2列:

kids_name varchar2(20) ,
flag_color varchar2(20)

上表中的条目如下:

A     red
B     red
C     blue
D     red
A     blue
B     blue
F     red
G    yellow
A    yellow
B    Green

我想写一个查询来显示那些同时带有红色和蓝色标志的孩子的名字。

因此,使用上表,查询应返回:

A
B

3 个答案:

答案 0 :(得分:3)

一种解决方案是使用HAVINGDISTINCT

select kids_name
from your_table
where flag_color in ('red', 'blue')
group by kids_name
having count(distinct flag_color) = 2

答案 1 :(得分:0)

您可以尝试使用Exists

select * from tablename a 
where exists (select 1 from tablename b 
     where a.kids_name=b.kids_name and flag_color in ('red', 'blue') having count(*)>1) 

答案 2 :(得分:0)

select kids_name
from your_table
where flag_color in ('red', 'blue')
group by kids_name
having count(*) > 1   // you can have count(*) > 1  if you want students with total count as 2 only.

根据数据集,行中没有重复,否则您将必须首先创建不同的行,然后必须在该结果集上运行此查询。

having count(distinct flag_color) = 2提到的

Radim Bača很好。