在重复键更新的第一个空列上插入Mysql

时间:2014-11-19 12:17:50

标签: mysql insert-into case-when on-duplicate-key

我正在尝试设置查询以在第一个空列上插入数据,或者,如果存在键值,则在第一个空列上更新

"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。查询得到语法错误会感激任何帮助!

1 个答案:

答案 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;