我不是最好的SQL,我正在努力实现以下目标:
我有一个像这样的列的表:
id | cup_type | cup_id | name
我在数据库中有大量记录,它们具有相同的cup_id
但不同的cup_types
我真的想选择具有相同cup_id
但不同cup_types
的记录
id | cup_type | cup_id | name
1 | TypeOne | 12 | NameOne
2 | TypeTwo | 12 | NameTwo
3 | TypeOne | 13 | NameThree
4 | TypeTwo | 13 | NameFour
5 | TypeOne | 14 | NameFive
6 | TypeOne | 14 | NameSix
当我运行上述查询时,我会回复以下内容:
id | cup_type | cup_id | name
1 | TypeOne | 12 | NameOne
2 | TypeTwo | 12 | NameTwo
3 | TypeOne | 13 | NameThree
4 | TypeTwo | 13 | NameFour
我希望我已经解释了这个,如果需要更清晰,请告诉我。
答案 0 :(得分:1)
此查询可以解决问题
select * from
yourtable a
join (select cup_id, count(distinct cup_type) nbType
from yourTable
group by cup_id) b using(cup_id)
where b.nbType >= 2;
cup_type
。cup_id
对结果集进行分组。 cup_id
,以便我们可以使用该ID加入同一张桌子。答案 1 :(得分:0)
尝试这样的事情:
选择a.id,b.id .......从t1作为a,t2作为b,其中a.cup_id = b.cup_id和a.cup_type!= b.cup_type