Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql按条件分组_Mysql_Sql - Fatal编程技术网

Mysql按条件分组

Mysql按条件分组,mysql,sql,Mysql,Sql,我想为分组依据应用条件 当条件city\u 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_i

我想为
分组依据
应用条件

当条件
city\u 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 
)

任何人都可以帮助我避免使用
联合
,并在一次查询中获得列表?

一个想法:
分组,当
城市id
不为零时,模拟一个随机的唯一值进行分组。因此,
city\u id=0
的每一行都不会分组

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

UUID被设计为在空间和空间上全局唯一的数字 时间对UUID()的两个调用将生成两个不同的 值,即使这些调用是在两台单独的计算机上执行的 它们彼此不相连


一个想法是:
groupby
city\u id
当它不为零时,否则模拟一个随机的唯一值进行分组。因此,
city\u id=0
的每一行都不会分组

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

UUID被设计为在空间和空间上全局唯一的数字 时间对UUID()的两个调用将生成两个不同的 值,即使这些调用是在两台单独的计算机上执行的 它们彼此不相连


当城市id=0时
应该是
当城市id为0时
@hjpotter92:你确定吗?我重新阅读了这个问题,我非常确定条件是正确的。选择city\u id,sum(sales)作为product\u sales WHERE city\u id的计数=0如果城市与0不同,则我们按城市id分组,这是OP所问的问题。这个答案似乎是我的解决方案,但像这样使用UUID会有一些缺点吗?
当城市id=0时
应该是
当城市id为0时
@hjpotter92:你确定吗?我重新阅读了这个问题,我非常确定条件是正确的。选择city\u id,sum(sales)作为product\u sales WHERE city\u id的计数=0如果城市与0不同,则我们按城市id分组,这是OP所问的问题。这个答案似乎是我的解决方案,但像这样使用UUID是否存在一些缺点???UNION有什么问题?UNION有什么问题?