我已经为这个问题苦苦思索了几个小时,但无济于事。我一直在查看 stackoverflow.com 上与返回多行的子查询相关的许多问题,但未能找到对我的情况有帮助的问题。
我有两个表:clients 和positions。我正在尝试使用 clients.id 更新 positions.client_id WHERE clients.file_name = positions.file_name。
基本上我有一个需要分配给客户的职位列表。每个客户都有多个职位,但每个职位都分配给一个客户。也就是说,client_id在positions中不是唯一的,但是id在clients中是唯一的(主键)。
这是我一直在尝试的不同变体:
UPDATE positions
SET client_id = (SELECT clients.id
FROM clients
WHERE clients.file_name = positions.file_name)
它返回。
1242 - Subquery returns more than 1 row
在此先感谢您的帮助!
最佳答案
使用 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/