我试图弄清楚是否可以检查表 B 中是否存在特定记录。如果存在,请不要更新表 A。
我试过谷歌搜索,但我只找到插入版本,我不确定是否可以使用更新查询。
提前致谢
我试图弄清楚是否可以检查表 B 中是否存在特定记录。如果存在,请不要更新表 A。
我试过谷歌搜索,但我只找到插入版本,我不确定是否可以使用更新查询。
提前致谢
update table_to_update
set some_column = 123
where id = 1
and id not in (select id from table_b)
以下 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
主表的列在哪里。
另一方面,当使用这句话时,我们有更大的灵活性,因为主表的列有主键不是必要条件。
您也可以尝试使用 MySQL存在表达式。在较旧的 MySQL 版本(即 5.0)上使用 exists 语法对我来说比使用嵌套查询要快。
update table_a
set some_column = 'bla'
where not exists (select id
from table_b
where table_a.id = table_b.id)