我为一些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
关于如何获得正确行为的任何想法?
答案 0 :(得分:0)
我建议您将查询编写为:
UPDATE table t1 JOIN
country t2
ON t1.country = t2.country
SET t1.country_id = t2.id;
但我确实同意你的代码应该工作,当子查询没有匹配时插入显式默认值。