根据2列选择行

时间:2015-03-26 22:16:58

标签: mysql sql select group-by

我不是最好的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

我希望我已经解释了这个,如果需要更清晰,请告诉我。

2 个答案:

答案 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加入同一张桌子。
  • 仅返回不同类型的计数至少为2的那些。

答案 1 :(得分:0)

尝试这样的事情:

选择a.id,b.id .......从t1作为a,t2作为b,其中a.cup_id = b.cup_id和a.cup_type!= b.cup_type