我一直在努力解决这个问题好几个小时都没有用。我一直在看许多与子查询返回不止一行有关的stackoverflow.com问题,但未能找到对我的情况有帮助的子查询。
我有两个表:客户和职位。我正在尝试使用clients.id更新Wheres.client_id,而clients.file_name = positions.file_name。
基本上,我有一个需要分配给客户的职位清单。每个客户都有多个职位,但每个职位都恰好分配给一个客户。换句话说,client_id在位置上不是唯一的,但是id在客户端中是唯一的(主键)。
这是我一直在尝试的不同变体形式:
UPDATE positions
SET client_id = (SELECT clients.id
FROM clients
WHERE clients.file_name = positions.file_name)
它返回。
1242-子查询返回多于1行
在此先感谢您的帮助!
最佳答案
使用LIMIT clause。这会将结果数量限制为一行。
UPDATE positions
SET client_id =
(
SELECT clients.id
FROM clients
WHERE clients.file_name = positions.file_name
LIMIT 1
)
请记住,最佳实践通常是不要使用子查询来实现SQL所需的功能。
关于mysql - 子查询返回1行以上的更新,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14631814/