[英]Insert record if two values do not exist in MYSQL (same table)
我試圖僅在沒有包含兩個值的現有記錄時才將記錄插入表中。 該查詢引發錯誤:“在'WHERE NOT EXISTS附近使用語法”
我已經嘗試了SO帖子中的各種示例,但似乎無法解決這個問題。
INSERT INTO tasks_admin2agent
(trans_id,category,task_name,task_detail,date_due_d)
VALUES
('2186597-L1','Listing','Incomplete Listing Record', 'Please complete the
listing record','2018-03-31')
WHERE NOT EXISTS
(SELECT
trans_id,task_name
FROM tasks_admin2agent
WHERE trans_id = '2186597-L1'
AND task_name = 'Incomplete Listing Record'
)
對我來說,如果將“ VALUES”更改為“ SELECT”,則可以使用。 但我無法解釋為什么這行得通
INSERT INTO tasks_admin2agent
(trans_id,category,task_name,task_detail,date_due_d)
SELECT
('2186597-L1','Listing','Incomplete Listing Record', 'Please complete the
listing record','2018-03-31') FROM tasks_admin2agent
WHERE NOT EXISTS
(SELECT
trans_id,task_name
FROM tasks_admin2agent
WHERE trans_id = '2186597-L1'
AND task_name = 'Incomplete Listing Record'
)
嘗試這個:
INSERT INTO tasks_admin2agent
(trans_id,category,task_name,task_detail,date_due_d)
SELECT
'2186597-L1','Listing','Incomplete Listing Record', 'Please complete the
listing record','2018-03-31' from tasks_admin2agent
WHERE NOT EXISTS
(SELECT
*
FROM tasks_admin2agent
WHERE trans_id = '2186597-L1'
AND task_name = 'Incomplete Listing Record'
);
您還可以查看:在不存在的情況下插入值
嘗試類似
INSERT INTO tasks_admin2agent
(trans_id,category,task_name,task_detail,date_due_d)
SELECT
'2186597-L1','Listing','Incomplete Listing Record', 'Please complete the
listing record','2018-03-31' FROM tasks_admin2agent
WHERE NOT EXISTS
(SELECT
*
FROM tasks_admin2agent
WHERE trans_id = '2186597-L1'
AND task_name = 'Incomplete Listing Record'
);
您可以嘗試演示
只需在有問題的兩列上設置(Composite-)Key-Constraint(唯一):
ALTER TABLE tbl ADD UNIQUE KEY `uniqueConstraint` (col1, col2);
使用常規插入和“句柄”“重復鍵錯誤”->這意味着值對已經存在。
這也將允許您將查詢與ON DUPLICATE KEY UPDATE
-Syntax結合使用。 (如果需要的話)
請注意,中止的插入或On duplicate key update
無論如何都會消耗下一個自動增量ID。
可以使用FROM DUAL在此示例中使其正常工作。
謝謝大家的協助!
INSERT INTO `table` (value1, value2)
SELECT 'stuff for value1', 'stuff for value2' FROM DUAL
WHERE NOT EXISTS (SELECT * FROM `table`
WHERE value1='stuff for value1' AND value2='stuff for value2')
LIMIT 1
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.