我现在无法为我想要的内容生成一个有效的mysql查询。我已经接近了
IF NOT EXISTS(SELECT *
FROM Users
WHERE Downloads='c6310e0ae33f9377f6ae7994bbafe6e20113aaf4')
UPDATE Users
SET `Downloads`='c6310e0ae33f9377f6ae7994bbafe6e20113aaf4'
WHERE `User`='andrewfree';
这失败了,我读到了关于INSERT IGNORE INTO的文章,但这也没有帮助。我想做的是把这个散列添加到用户下载字段中,如果它不存在于任何一个下载字段中的表中。
最佳答案
移动EXISTS
子句中的WHERE
:
UPDATE Users
SET `Downloads`='c6310e0ae33f9377f6ae7994bbafe6e20113aaf4'
WHERE `User`='andrewfree'
AND NOT EXISTS(
SELECT 1
FROM Users
WHERE Downloads='c6310e0ae33f9377f6ae7994bbafe6e20113aaf4'
)
或在用户上添加唯一密钥。下载并使用更新忽略:
ALTER TABLE Users ADD UNIQUE KEY downloads_unique (Downloads);
UPDATE IGNORE Users SET Downloads = 'c63...' WHERE User='andrewfree';
如果该行已存在此“cc>值”,则不进行更新。
对于IGNORE关键字,不会更新发生重复键冲突的[…]行。
见UPDATE syntax。
关于mysql - Mysql如果不存在则语法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7399052/