mysql - 关于重复键更新,连接表字段

时间:2016-02-21 07:17:23

标签: mysql sql-insert insert-update

kb_nid是唯一键和c_nodes表;包括kb_nid,runState,startedTime字段

我想在表更新之前,比较旧表但得到这个错误:

  

“SQL错误(1054):'字段列表'中的未知列'cn.runState'”

{{1}}

我看不出任何问题。

修改http://sqlfiddle.com/#!9/8f8a84

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

我用子查询修复它。我猜错误原因是 GROUP BY

INSERT INTO c_nodes(kb_nid,runState,startedTime) 
SELECT n.id,runState,startedTime  FROM (
SELECT n.id, n.nState>10 as runState, NULL as startedTime 
FROM node n 
GROUP BY n.id) tt
LEFT JOIN  c_nodes cn ON tt.id =cn.kb_nid
ON DUPLICATE KEY UPDATE startedTime=IF(cn.runState<>VALUES(runState) ,NOW(),cn.startedTime)

参考:https://stackoverflow.com/a/14533265/3952108