Mysql Group By条件

时间:2013-04-16 08:04:32

标签: mysql sql

我想为GROUP BY申请条件。

当条件city_id != 0为真时,将列表分组。否则正常列表。

我使用了这个查询:

(
    SELECT city_id, sum(sales) as counts
    FROM product_sales
    WHERE city_id !=0     
    GROUP BY city_id
)
UNION
(
    SELECT city_id, sales 
    FROM product_sales  
    WHERE city_id =0     
    ORDER BY sales_id 
)

任何人都可以帮我避开UNION并在单个查询中获取列表吗?

1 个答案:

答案 0 :(得分:4)

一个想法:GROUP BY city_id当它不为零时,否则模拟随机唯一值以便与UUID()进行分组。因此,city_id = 0的每一行都不会被分组。

select city_id, sum(sales)
from product_sales
group by
  case when city_id = 0
  then UUID()
  else city_id
  end

SQL Fiddle.

  

UUID被设计为在空间和全球范围内唯一的数字   时间。对UUID()的两次调用预计会产生两种不同的调用   值,即使这些调用是在两台独立的计算机上执行的   彼此没有联系。