我正在规范现有数据库。我目前在Table1中有两列,域和容器,具有有限的不同组合(目前约有30个组合来自~1000个记录)。我已经构建了一个新的Table2,它包含所有组合,并在安装新记录时自动生成主键(container_id)。我已经向Table1添加了一个container_id列,并希望根据Table1.container列填充值。
此时,表2中的所有容器名称都是不同的,但将来可能会发生变化,因此需要一个唯一的数字作为PK。
即
UPDATE Table1
SET container_id = (SELECT Table2.container_id
FROM Table2
WHERE Table2.container = Table1.container)
WHERE EXISTS
( SELECT Table2.container_id
FROM Table2
WHERE Table2.container = Table1.container)
此查询返回error 1242: subquery returns more than one row.
我咆哮着完全错误的树吗?表2应该有零重复值。
答案 0 :(得分:0)
我应该使用连接来更新table1
UPDATE Table1
LEFT JOIN Table2 USING (container)
SET Table1.contanier_id = Table2.contanier_id
WHERE Table1.contanier_id IS NULL AND Table2.contanier_id IS NOT NULL;
答案 1 :(得分:0)
Table2.container不是唯一的,因此可以重复。因此,两个子查询都返回多行。