我使用MySQL数据库,我想基于另一个更新表中的字段。类似的东西:
UPDATE table1
SET field1 = table2.id
WHERE field2 IN (
SELECT table2.name
FROM table2
);
我知道这个查询不起作用,但这是一个想法。这甚至可以吗?
答案 0 :(得分:3)
您可以使用相关子查询,如下所示。这假设将返回一个匹配值。如果返回多个匹配值,则会引发错误;如果返回零,则将字段设置为null。如果不希望最后一个行为,则需要where
子句。
UPDATE table1
SET field1 = (SELECT DISTINCT table2.ValueColumn
FROM table2
WHERE table2.JoinColumn = table1.JoinColumn)
修改强>
要查看0或1个以上匹配的记录,您可以使用
SELECT table1.JoinColumn, COUNT(DISTINCT table2.ValueColumn)
FROM table1
LEFT JOIN table2
ON table2.JoinColumn = table1.JoinColumn
GROUP BY table1.JoinColumn
HAVING COUNT(DISTINCT table2.ValueColumn) <> 1