SQL查询更新字段取决于子查询

时间:2015-07-08 22:47:05

标签: mysql sql insert exists

我需要一个SQL查询。 我的表用户有3个字段:名称,iduser,idgroup。

一个用户可以在具有相同iduser和不同idgroup的同一个表上多次出现。

如果字段名称已更改,则字段名称应更新为新值。

如果没有给定iduser和idgroup的行,则必须将其作为新行插入。

IF EXISTS(SELECT 1 FROM users WHERE iduser=3 AND idgroup=4)
BEGIN
     UPDATE users SET Name='New Name' WHERE iduser=3 AND idgroup=4
END
ELSE
     INSERT INTO users VALUES('Name',5,3)
END

我的SQL查询sintax错了所以我无法使用它,你将如何实现我的需求?

我使用mySQL数据库(使用phpmyadmin管理)并从lua脚本执行插入操作。

1 个答案:

答案 0 :(得分:0)

您需要确保拥有正确的唯一密钥。

ALTER TABLE users ADD UNIQUE `unique_index`(`iduser`, `idgroup`);

然后,您应该能够运行此插入/更新:

INSERT INTO users (Name, iduser, idgroup) 
VALUES ('name value',5,3) 
ON DUPLICATE KEY UPDATE Name = VALUES(Name) WHERE Name <> VALUES(Name)