我正在尝试设置查询以在第一个空列上插入数据,或者,如果存在键值,则在第一个空列上更新
"INSERT INTO table
(myid,tr1)
VALUES ('12345', '$data')
ON DUPLICATE KEY UPDATE
tr1 = CASE WHEN tr1 = '' ELSE tr1 END,
tr2 = CASE WHEN tr2 = '' ELSE tr2 END,
tr3 = CASE WHEN tr3 = '' ELSE tr3 END = $data"
其中myid是唯一键,换句话说:
--------------------------
| myid | tr1 | tr2 | tr3 |
--------------------------
| 1233 | data| | |
--------------------------
| | | | |
--------------------------
当我的id匹配时,它会更新下一个空列中的$ data,在这种情况下,myid = 1233列将是tr2。当myid不存在时,它会在tr1上插入myid和$ data。查询得到语法错误会感激任何帮助!
答案 0 :(得分:2)
也许问题出在case case子句中。试试这个例子。
我对查询做了一些更改,现在应该可以了。 EXAMPLE
INSERT INTO `table` (myid,tr1)
VALUES ('12345', '111')
ON DUPLICATE KEY UPDATE
tr3 = CASE WHEN tr2 != '' AND tr3 = '' THEN '111' ELSE tr3 END,
tr2 = CASE WHEN tr1 != '' AND tr2 = '' THEN '111' ELSE tr2 END,
tr1 = CASE WHEN tr1 = '' THEN '111' ELSE tr1 END;