昨天我問了這個問題:if in mysql insert statement答案很有效。 問題是如果一個值不存在,我需要在表格中插入一行。 f1。sql如果在插入語句時沒有選擇
If('x' NOT EXIXTS in (select campoX from table) then
insert into table (...) values (...) etc.
我該怎麼辦?在互聯網上我無法找到答案:(
昨天我問了這個問題:if in mysql insert statement答案很有效。 問題是如果一個值不存在,我需要在表格中插入一行。 f1。sql如果在插入語句時沒有選擇
If('x' NOT EXIXTS in (select campoX from table) then
insert into table (...) values (...) etc.
我該怎麼辦?在互聯網上我無法找到答案:(
我假設你的表名爲TBL。
INSERT INTO tbl (campoX)
SELECT 'X' FROM DUAL
WHERE NOT EXISTS(
SELECT campoX from tbl
WHERE campoX ='X'
);
DUAL
純粹是出於人誰要求所有的SELECT語句應該具有和可能的便利其他條款。MySQL可能忽略的條款。MySQL的不需要FROM DUAL如果沒有表被引用。
至於其他一些提到的,你可以在這裏使用INSERT IGNORE
聲明如果您campoX是unigue或主鍵字段。
關於:
CASE
WHEN 'X' NOT EXIST IN (SELECT campoX FROM yourTable) THEN
INSERT INTO yourTable (...) VALUES (...)
END CASE
mysql給我一個CASE單詞的錯誤。 – Martina 2013-02-20 12:23:55
@ user1856906現在嘗試 – 2013-02-20 12:37:23
發明您的編程語言並不是描述問題的最合適方式。
你的意思是說你只想添加一行數據庫中沒有數據的地方?如果是這樣,那麼確保你已經在表上定義了主鍵或唯一鍵,然後執行INSERT - 但忽略重複的鍵錯誤。事實上,與MySQL可以完全使用「INSERT IGNORE ....」抑制差錯發生的重複鍵
問題是我不想對主鍵進行控制,而是對一個也可以爲空的屬性進行控制。 – Martina 2013-02-20 12:35:15
使用雙表:
INSERT INTO campoX (col1, col2, col3)
SELECT value1, value2, value3
FROM dual
WHERE NOT EXISTS(SELECT *
FROM campoX
WHERE col1=value1);
什麼,如果值已經存在?你想要什麼專欄的價值是獨一無二的? – 2013-02-20 12:17:45
我認爲你需要PL/SQL來完成這樣的任務 – Abubakkar 2013-02-20 12:18:23