更新到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
,则更有意义。