SQL 语法错误:缺少逗号分隔符 - select IFNULL(n.depart_name,0) As depart_name
在使用 SQL 语句时,经常会出现语法错误,例如缺少逗号分隔符。以下是一个常见的错误示例:
select IFNULL(n.depart_name,0) As depart_name
IFNULL(ROUND(avg(n.pm25),2),0) As avgPM25,
IFNULL(ROUND(avg(n.wind_direction),2),0) As avgWind,
IFNULL(ROUND(avg(n.tsp),2) ,0) As avgTsp,
IFNULL(ROUND(avg(n.noise),2) ,0) As avgNoise,
IFNULL(ROUND(AVG(CASE
WHEN (HOUR(n.date_time)) BETWEEN 6 AND 17 THEN temperature
ELSE NULL END) ,2),0)AS day_temperature ,
IFNULL(ROUND(AVG(CASE
WHEN (HOUR(n.date_time)) NOT BETWEEN 6 AND 17 THEN temperature
ELSE NULL END),2),0) AS night_temperature
from (select s.depart_name,
e.pm25,
e.pm10,
e.noise,
e.tsp,
e.temperature,
e.date_time,
e.device_id,
e.wind_direction
from `pmis-dtu`.environment_info e
left join `pmis-dtu`.dtu_device d on d.id = e.device_id
left join `pmis-dtu`.sys_depart s on d.bumen = s.id
WHERE s.memo is not null
and e.date_time > (SELECT DATE_SUB(NOW(), INTERVAL 1 MONTH))
group by s.depart_name, e.date_time) n
这段代码中的错误在于第一行代码的末尾缺少逗号分隔符。
解决方法:
在第一行代码的末尾添加一个逗号,如下所示:
select IFNULL(n.depart_name,0) As depart_name,
IFNULL(ROUND(avg(n.pm25),2),0) As avgPM25,
IFNULL(ROUND(avg(n.wind_direction),2),0) As avgWind,
IFNULL(ROUND(avg(n.tsp),2) ,0) As avgTsp,
IFNULL(ROUND(avg(n.noise),2) ,0) As avgNoise,
IFNULL(ROUND(AVG(CASE
WHEN (HOUR(n.date_time)) BETWEEN 6 AND 17 THEN temperature
ELSE NULL END) ,2),0)AS day_temperature ,
IFNULL(ROUND(AVG(CASE
WHEN (HOUR(n.date_time)) NOT BETWEEN 6 AND 17 THEN temperature
ELSE NULL END),2),0) AS night_temperature
from (select s.depart_name,
e.pm25,
e.pm10,
e.noise,
e.tsp,
e.temperature,
e.date_time,
e.device_id,
e.wind_direction
from `pmis-dtu`.environment_info e
left join `pmis-dtu`.dtu_device d on d.id = e.device_id
left join `pmis-dtu`.sys_depart s on d.bumen = s.id
WHERE s.memo is not null
and e.date_time > (SELECT DATE_SUB(NOW(), INTERVAL 1 MONTH))
group by s.depart_name, e.date_time) n
添加逗号后,SQL 语句将能正确执行。
总结:
在编写 SQL 语句时,要注意每个字段之间需要用逗号分隔。缺少逗号分隔符会导致语法错误,影响代码的执行。
原文地址: https://www.cveoy.top/t/topic/mLKW 著作权归作者所有。请勿转载和采集!