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