更新到MySQL表中,除非已经存在相同的值

更新到MySQL表中,除非已经存在相同的值,mysql,sql,mysqli,Mysql,Sql,Mysqli,我想更新数据库中的一行,但如果该值已存在,则不希望更新该行 例如: UPDATE religion SET name='3' WHERE id=4 AND id NOT IN(SELECT id FROM religion); 任何指导都将不胜感激 编辑: 我试着做数据验证。我想这样做,如果表中已经存在输入的值,那么表就不会更新。我想您是在使用insert语句,而不是update语句。因为如果行不存在,则无法更新该行。所以我认为你可以这样做: I

我想更新数据库中的一行,但如果该值已存在,则不希望更新该行

例如:

UPDATE religion SET
        name='3'
        WHERE id=4
        AND id NOT IN(SELECT id FROM religion);
任何指导都将不胜感激

编辑:
我试着做数据验证。我想这样做,如果表中已经存在输入的值,那么表就不会更新。

我想您是在使用insert语句,而不是update语句。因为如果行不存在,则无法更新该行。所以我认为你可以这样做:

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);
更新宗教集name='3',其中id=4,name=”


这应该有效:
UPDATE religation SET name='3',其中id=4,name!='3';

这里有一个简单的解释:如果id等于4,而名称不等于3,则更新。这是有效的。

不清楚您试图实现什么
更新宗教集name='3',其中id=4和name!='3'3'; insert
。您的问题不清楚您是否试图说,当
id
列尚未设置时(即
id
==
NULL
),仅更新
name
列?如果在未设置
name
时更新
name
,则更有意义。