MySQL GROUP BY - 排除组中值的值不同的组

时间:2016-07-20 13:22:02

标签: mysql

我有一个类似下面的查询,它返回每个组的连接日期链:

myTable包含group_iddateregion

SELECT
GROUP_CONCAT(
             date
             ORDER BY DATE DESC SEPARATOR '<-'
) AS date_chain
FROM myTable
GROUP BY group_id

但是,我想省略该组中有多个region值的任何组。有没有直接的方法来实现这个目标?

e.g。如果我们有

group_id | date | region
________________________
    1    | 2012 |  US
    1    | 2013 |  UK
    2    | 2010 |  US
    2    | 2014 |  US

我们应该返回2014<-2010,但不是2013<-2012,因为第1组更改了区域

1 个答案:

答案 0 :(得分:0)

http://sqlfiddle.com/#!9/94ee4a/1

SELECT
GROUP_CONCAT(
             date
             ORDER BY DATE DESC SEPARATOR '<-'
) AS date_chain
FROM myTable
GROUP BY group_id
HAVING COUNT(DISTINCT region)<2