MySQL 字段默认值在连接时不应用



我为某些 INT 字段编写了一个默认值为 -1 的 CREATE 语句:

CREATE TABLE IF NOT EXISTS table (
country_id INT(11) NOT NULL DEFAULT -1,
...)

使用 UPDATE 进行连接时,不匹配的值被替换为 0,而不是我预期的 -1:

UPDATE table AS t1 
SET 
t1.country_id = (SELECT 
t2.id
FROM
country AS t2
WHERE
t1.country = t2.country
);

=> 当 UPDATE 找不到匹配项时,country_id设置为 0 而不是 -1

关于如何获得正确行为的任何想法?

我建议你将查询编写为:

UPDATE table t1 JOIN
country t2
ON t1.country = t2.country
SET t1.country_id = t2.id;

但我确实同意您的代码应该工作,当子查询不匹配时插入显式默认值。

最新更新