我现在无法为我想要的内容生成一个有效的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/

10-10 18:53