![](/img/trans.png)
[英]mysql conditional insert - if not exists insert - multi value insert
[英]mysql conditional insert - if not exists insert
是否有查詢只檢查記錄,如果它不存在插入? 我不想重復更新或替換。 尋找一個查詢解決方案,看看其他答案,但不是我真正希望的。
表:
name|value|id
------------------
phill|person|12345
偽查詢:
IF NOT EXISTS(name='phill', value='person', id=12345) INSERT INTO table_name
使用REPLACE
- 與INSERT完全相同,只是如果表中的舊行與PRIMARY KEY或UNIQUE索引的新行具有相同的值,則在插入新行之前刪除舊行。
http://dev.mysql.com/doc/refman/5.0/en/replace.html
-- For your example query
REPLACE INTO table_name(name, value, id) VALUES
('phill', 'person', 12345)
編輯:由於您不能使用REPLACE,另一個選項是:為表數據設置約束索引(主鍵,唯一性)並使用INSERT IGNORE
INSERT IGNORE INTO table_name
SET name = 'phill',
value = 'person',
id = 12345;
如果從具有子查詢的select查詢執行插入,如果該行尚不存在則僅返回行?
偽代碼:
INSERT INTO TABLE_FOO (...)
SELECT @VAR1, VAR2 ...
FROM DUMMYTABLE -- THIS TABLE SHOULD CONTAIN 1 RECORD OF ANYTHING
-- IN CASE THE FROM IS REQUIRED
WHERE (SELECT COUNT(*) FROM TABLE_FOO WHERE COLUMN1 = @VAR1) = 0
這種模式應該有效,你只需要讓MySQL的語法正確。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.