Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.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_Alias - Fatal编程技术网

分组方式上的MySQL别名

分组方式上的MySQL别名,mysql,alias,Mysql,Alias,我有以下mysql查询: insert into my_table (col_a, col_b) select col_a, col_b, if(foo, bar, baz) as my_alias from qux group by my_alias having my_alias is not null 如果没有选择,我如何重写查询?如果不重写生成的字段我的别名 例如,我试图实现这样的目标,我只在列a、列b上插入: insert into my_table (col_a, c

我有以下mysql查询:

insert into my_table (col_a, col_b)
select
  col_a, 
  col_b,
  if(foo, bar, baz) as my_alias
from qux
group by my_alias
having my_alias is not null
如果没有
选择
,我如何重写查询?如果不重写生成的字段
我的别名

例如,我试图实现这样的目标,我只在列a、列b上插入:

insert into my_table (col_a, col_b)
select
  col_a, 
  col_b
from qux
group by if(foo, bar, baz) as my_alias
having my_alias is not null
我找到了一些以前的答案,其中这是通过进行子选择来实现的。没有一个能做到这一点吗?提前感谢。

MySQL允许GROUPBY子句中的表达式,因此别名为 不必要的:

SELECT id, FLOOR(value/100)   FROM tbl_name   GROUP BY id,
FLOOR(value/100);
HAVING在末尾过滤掉空记录。我们也可以使用WHERE来过滤正手时的空记录。这意味着这应该是可行的:

insert into my_table (col_a, col_b)
select
  col_a, 
  col_b
from qux
where if(foo, bar, baz) is not null
group by if(foo, bar, baz)
:

MySQL允许GROUPBY子句中的表达式,因此别名为 不必要的:

SELECT id, FLOOR(value/100)   FROM tbl_name   GROUP BY id,
FLOOR(value/100);
HAVING在末尾过滤掉空记录。我们也可以使用WHERE来过滤正手时的空记录。这意味着这应该是可行的:

insert into my_table (col_a, col_b)
select
  col_a, 
  col_b
from qux
where if(foo, bar, baz) is not null
group by if(foo, bar, baz)

谢谢你的帮助,贾斯尼。我尝试使用别名是因为真正的“
if(foo,bar,baz)
”是
大的
丑的
:)谢谢你让我参考手册。我想这是不可能的。谢谢你的帮助,贾斯尼。我尝试使用别名是因为真正的“
if(foo,bar,baz)
”是
大的
丑的
:)谢谢你让我参考手册。我想这是不可能的。