在使用 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 语句时,要注意每个字段之间需要用逗号分隔。缺少逗号分隔符会导致语法错误,影响代码的执行。

SQL 语法错误:缺少逗号分隔符 - select IFNULL(n.depart_name,0) As depart_name

原文地址: https://www.cveoy.top/t/topic/mLKW 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录