我试图弄清楚是否可以检查表B中是否存在特定记录。如果是,请不要更新表A.
我试过谷歌搜索,但我只找到插入版本,我不确定是否可以使用更新查询。
提前致谢
答案 0 :(得分:10)
update table_to_update
set some_column = 123
where id = 1
and id not in (select id from table_b)
答案 1 :(得分:3)
以下SQL语句在我添加的位置充当外键 子表中的新字段具有此值的条件 不存在于主表的列中。
UPDATE t1
SET c1 = ?
WHERE t1.id = ?
AND ? NOT IN (SELECT id FROM t2);
参数和表格的含义:
第一个和第三个参数的值必须相同!
使用此语句时,当我们引用主表的字段时,该列必须具有主键。这就是与外键相似的原因。
第二种选择也是:
UPDATE t1 a
LEFT JOIN t2 b
ON b.column = ?
SET t1.c1 = ?
WHERE b.column IS NULL && a.id = ?;
第一个和第二个参数必须相同。其中column
是主表的列。
另一方面,当使用另一个句子时,我们有更大的灵活性,因为主表的列不具备主键的必要条件。
答案 2 :(得分:0)
您也可以尝试使用MySQL exists表达式。在较旧的MySQL版本上使用存在语法,即证明5.0比使用嵌套查询更快。
update table_a
set some_column = 'bla'
where not exists (select id
from table_b
where table_a.id = table_b.id)