2017-05-30 90 views
-1

我想要更新數據庫中的一行,但如果值已存在,我不希望它更新。更新到MySQL表中,除非已經存在相同的值

例如:

UPDATE religion SET 
     name='3' 
     WHERE id=4 
     AND id NOT IN(SELECT id FROM religion); 

任何指導,將不勝感激。

編輯: 我試圖做數據驗證。我想這樣做,以便表格不會更新,如果輸入的值已經存在於表格中。

+0

這是非常不清楚你試試才達到 – Jens

+0

'UPDATE宗教SET 名= '3' WHERE ID = 4 和名稱= '3'!; '你想要這個嗎? –

+0

你需要澄清你的目標。您的示例查詢嘗試僅更新表中不存在的行。這是沒有道理的。你是否試圖向表中添加新行?在這種情況下,使用'insert'。 – 2017-05-30 12:50:27

回答

0

我想你是在插入語句之後而不是更新語句。因爲如果行不存在,則無法更新行。所以,我認爲你可以做這樣的事情:

INSERT INTO religion 
(
    id, 
    name 
) 
SELECT 
    tbl.Id, 
    tbl.`name` 
FROM 
    (
     SELECT 4 as Id, '3' as name 
    ) as tbl 
WHERE NOT EXISTS(SELECT NULL FROM religion WHERE religion.id=tbl.Id); 
1

UPDATE宗教SET NAME = '3' WHERE ID = 4,名稱= 「」;

0

這應該工作:UPDATE religion SET name='3' WHERE id=4 AND name!='3'; 下面是一個簡單的解釋:如果ID等於4名不等於3,更新。這工作。

相關問題