mysql - 使用 EXISTS 插入 MySQL 5.x

标签 mysql insert

这个问题已经被问过和回答过很多次了,但我还是很困惑。所有我想要的 如果值不存在于列中,则执行插入语句。请注意,此列中的值不构成主键,因此 replaceupdate 方法将不起作用。

word_id(PK,自动完成)|词 |时间戳(自动完成)
1--siinecure--3 月 25 日
2--demotic--4 月 3 日
3--返祖论--5 月 5 日

在向该表中添加另一个词之前,我首先要检查它是否已经存在。 考虑到这一点,这个例子应该保持表格不变。

INSERT INTO word_table(word) VALUES "sinecure"
WHERE NOT EXISTS(SELECT word FROM word_table WHERE word LIKE "sinecure")

当然,这个查询之后表没有改变,只是因为它抛出了一个错误。 这不是我尝试过的唯一语法,但它是各种应用程序中最常提倡的语法 我看过的论坛/教程。我也尝试过各种技巧,例如使用变量来存储 EXISTS 语句生成的 bool 值,但无济于事。

最佳答案

你可以使用这个:

INSERT INTO word_table (word) 
SELECT 'sinecure'
FROM dual
WHERE NOT EXISTS (SELECT word FROM word_table WHERE word LIKE 'sinecure') ;

如果在任何时候都需要这种行为而不是偶尔,请按照其他人的建议在 word 列上添加唯一约束。然后你可以使用一个简单的插入,如果单词重复,它会抛出错误:

INSERT INTO word_table (word) 
VALUES ('sinecure') ;

INSERT IGNORE 将忽略错误:

INSERT IGNORE INTO word_table (word) 
VALUES ('sinecure') ;

关于mysql - 使用 EXISTS 插入 MySQL 5.x,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12253960/

相关文章:

mysql - 如何在mysql中将2列数据合并为1列并保存?

php从mysql中获取多个数据

html - CSS:在文本字符后插入换行符

c# - 执行 MySQL 查询时出错

MYSQL select所有数据表a if子句表b满足

PHP 类,在另一个 PHP 文件中使用查询函数

mysql - switch 语句内的奇怪结果

php - 在php/mysql中插入数组数据

java - 我的搜索方法出现所有空值

php从带有引号的数组中获取值