2016-06-27 42 views
0

我的查询显示错误(表达式期望在DISTINCT附近),我不知道如何解决它,如果我删除第一个INSERT查询行,值正确选择,如果我添加插入它显示错误,任何帮助可能会提前感谢提前。通过选择不同的值插入查询中的Mysql语法错误

INSERT INTO normal_days (user_id, department_id,designation_id,date_cur,clock_in,clock_out) 
    SELECT DISTINCT clo.user_id, design.department_id , uses.designation_id, clo.date,clo.clock_in, clo.clock_out 
    FROM clock clo 
    INNER JOIN holidays AS hol ON hol.date != clo.date 
    INNER JOIN users AS uses ON clo.user_id = uses.id 
    INNER JOIN designations AS design ON design.id = uses.designation_id 
    WHERE date(clo.created_at) = "2016-06-23" 
    AND TIMESTAMPDIFF(second,clo.clock_in, clo.clock_out) = 28800 
    AND !(DAYOFWEEK(clo.date)=7) 
    AND !(DAYOFWEEK(clo.date)=1); 
+0

什么错误你好吗? – Mureinik

+0

表达式接近DISTINCT,无法识别的关键字接近不同。 – Crysis

+0

这不是一个mysql错误,除了没有做你可能期望的事情(如果你在'假期'中有多于一行的话,'INNER JOIN假期在hol Holding!= clo.date'上不会排除节假日)一见钟情,它看起来在语法上对于mysql来说很好。你在使用mysql吗?如果是,或添加实际的错误消息。或者检查你的客户端,也许这是你使用这个代码发送这个查询到MySQL的东西,而这实际上是你的客户端的错误。 – Solarflare

回答

0
INSERT INTO normal_days (user_id, department_id,designation_id,date_cur,clock_in,clock_out) 
SELECT clo.user_id, design.department_id , uses.designation_id, clo.date, clo.clock_in, clo.clock_out 
FROM clock clo 
LEFT JOIN holidays AS hol ON hol.date = clo.date 
INNER JOIN users AS uses ON clo.user_id = uses.id 
INNER JOIN designations AS design ON design.id = uses.designation_id 
WHERE date(clo.created_at) = "2016-06-23" 
AND TIMESTAMPDIFF(second,clo.clock_in, clo.clock_out) = 28800 
AND !(DAYOFWEEK(clo.date)=7) 
AND !(DAYOFWEEK(clo.date)=1) 
AND hol.date is NULL ;