2017-05-30 52 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,更新。这工作。

相关问题