簡體   English   中英

mysql條件插入 - 如果不存在則插入

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM