mysql:使用通配符和group by时列的排序行为很奇怪

kpbpu008  于 2021-06-15  发布在  Mysql
关注(0)|答案(1)|浏览(339)

这两个mysql语句有什么区别?
作品:

select *, count(mycol) c from mytable group by mycol;

不起作用:

select count(mycol) c, * from mytable group by mycol;

第一个语句如我所料工作,而第二个语句给了我一个语法错误。为什么顺序很重要?
我很难从谷歌找到答案,因为我不完全确定我问的问题是否正确。
编辑:
下面是经过清理的错误消息。如果相关的话,我正在使用mysql工作台。
错误代码:1064。sql语法有错误;请查看与您的mysql服务器版本对应的手册,以获取在第1行的“*from mytable group by id”附近使用的正确语法

icomxhvb

icomxhvb1#

只要给表加上别名,语法错误就会消失。

select count(t.id) c, t.* from mytable t group by id;

看这把小提琴。
看起来mysql允许裸(不合格) * 只是立即跟随 SELECT . 以下查询还引发语法错误:

select 1, * from mytable t;

该文件防止使用裸机 * 与合同中的其他项目相结合 SELECT 列表:
一种只包含一个不合格项的选择表 * 可以用作从所有表中选择所有列的缩写。
不合格产品的使用 * 选择列表中的其他项可能会产生解析错误。要避免此问题,请使用合格的 tbl_name.* 参考文献。

相关问题