表名:工人,
Fields : worker_id | first_name | last_name | department
我有一个名为worker的表,我想写一个SQL查询,从Worker表中获取DEPARTMENT的唯一值并打印其长度。(数据库-Mysql)
select length(distinct(department)) from worker;
但它给出了一个错误消息:
错误1064(42000):SQL语法中有错误;查看与您的MySQL服务器版本对应的手册,了解在第1行中使用"distinct(department))from worker"附近的正确语法
但是当我运行下面的查询时,它工作得非常好:
select distinct(length(department)) from worker;
有人能解释一下为什么把distinct和length函数互换可以使查询正常工作吗?
先谢了!
4条答案
按热度按时间9lowa7mx1#
尽量不要使用distinct like function but子句,否则会给予语法错误.
下面的sql语句将执行如下所示:
dwbf0jvd2#
Distinct不是一个函数,而是一个子句
无论如何,在MySQL工作也与函数语法
由于DISTINCT生成的聚合结果删除了重复值,因此带有交换标记的代码无法工作,这意味着outer length()函数对不正确的行集起作用,或者更好的情况是,数据库引擎发现DISTINCT子句使用不当并引发语法错误
如果要使用outer length()函数,则应按以下方式编写代码
58wvjzkj3#
jm2pwxwz4#
从Worker中选择distinct(部门)作为“唯一部门”,len(部门)作为“名称长度”;