首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Mysql IF NOT EXISTS then语法

Mysql IF NOT EXISTS then语法
EN

Stack Overflow用户
提问于 2011-09-13 16:44:07
回答 2查看 4.6K关注 0票数 2

我现在还不能为我想要的东西生成一个工作的mysql查询。我尽可能的接近了

代码语言:javascript
复制
IF NOT EXISTS(SELECT * 
              FROM Users 
              WHERE Downloads='c6310e0ae33f9377f6ae7994bbafe6e20113aaf4') 
UPDATE Users 
SET `Downloads`='c6310e0ae33f9377f6ae7994bbafe6e20113aaf4' 
WHERE `User`='andrewfree';

这失败了,我正在阅读关于INSERT IGNORE INTO的文章,但这也没有帮助。我尝试做的是将这个散列添加到一个用户下载字段,如果它不存在于表中的任何人下载字段中。

EN

回答 2

Stack Overflow用户

发布于 2011-09-13 16:46:10

WHERE子句中移动EXISTS

代码语言:javascript
复制
UPDATE Users
SET    `Downloads`='c6310e0ae33f9377f6ae7994bbafe6e20113aaf4'
WHERE  `User`='andrewfree'
AND    NOT EXISTS(
           SELECT 1
           FROM   Users
           WHERE  Downloads='c6310e0ae33f9377f6ae7994bbafe6e20113aaf4'
       ) 

或者在Users.Downloads上添加一个唯一的密钥并使用UPDATE IGNORE:

代码语言:javascript
复制
ALTER TABLE Users ADD UNIQUE KEY downloads_unique (Downloads);

UPDATE IGNORE Users SET Downloads = 'c63...' WHERE User='andrewfree';

如果已经存在具有此Downloads值的行,则不会执行更新。

使用

关键字忽略...不更新发生重复键冲突的行。

参见UPDATE syntax

票数 3
EN

Stack Overflow用户

发布于 2011-09-13 16:47:23

代码语言:javascript
复制
UPDATE Users 
SET `Downloads`='c6310e0ae33f9377f6ae7994bbafe6e20113aaf4' 
WHERE `User`='andrewfree'
AND NOT EXISTS(SELECT * 
              FROM Users 
              WHERE Downloads='c6310e0ae33f9377f6ae7994bbafe6e20113aaf4') 

编辑:

实际上,上面的语句会抛出一个错误。我认为这可以做到这一点(未经测试)

代码语言:javascript
复制
UPDATE Users u1 INNER JOIN Users u2 
                ON u2.Downloads='c6310e0ae33f9377f6ae7994bbafe6e20113aaf4'
SET u1.`Downloads`='c6310e0ae33f9377f6ae7994bbafe6e20113aaf4' 
WHERE u1.`User`='andrewfree'
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7399052

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档