Mysql 如何修复:错误代码:1242。子查询返回超过1行
这很好:Mysql 如何修复:错误代码:1242。子查询返回超过1行,mysql,sql,Mysql,Sql,这很好: UPDATE users SET group_id = (SELECT Prov_Current_Address_City FROM users WHERE scope IS NULL AND health_facility_id = 10) WHERE scope IN ('MHO', 'Mayor', 'Doctor') AND health_facility_id = 10; 有了这个,我得到了一个错误: UPDATE users SET
UPDATE users
SET group_id = (SELECT Prov_Current_Address_City FROM users WHERE scope IS NULL AND health_facility_id = 10)
WHERE scope IN ('MHO', 'Mayor', 'Doctor') AND health_facility_id = 10;
有了这个,我得到了一个错误:
UPDATE users
SET group_id = (SELECT Prov_Current_Address_City FROM users WHERE scope IS NULL AND health_facility_id = (SELECT Prov_Current_Address_City FROM users WHERE scope IS NULL))
WHERE scope IN ('MHO', 'Mayor', 'Doctor') AND health_facility_id = (SELECT health_facility_id FROM users WHERE scope IS NULL);
但是这个
(SELECT Prov_Current_Address_City FROM users WHERE scope IS NULL)
查询正在返回许多数据。我想要实现的是更新列组id中的多行。如果没有任何其他限制城市的条件,请参见此图。 像这样做
UPDATE users
SET group_id = (SELECT Prov_Current_Address_City
FROM users
WHERE scope IS NULL
AND health_facility_id = (SELECT Prov_Current_Address_City
FROM users
WHERE scope IS NULL
ORDER BY Prov_Current_Address_City
Limit 1)
ORDER BY Prov_Current_Address_City
Limit 1)
WHERE scope IN ('MHO', 'Mayor', 'Doctor')
AND health_facility_id = (SELECT health_facility_id
FROM users
WHERE scope IS NULL
ORDER BY health_facility_id
Limit 1);
当子查询返回多行时,只需将=改为IN即可。如果不希望子查询返回多行,则需要修复原始查询
UPDATE users
SET group_id =
(
SELECT Prov_Current_Address_City
FROM users
WHERE scope IS NULL
AND health_facility_id IN
(
SELECT Prov_Current_Address_City
FROM users
WHERE scope IS NULL
)
)
WHERE scope IN ('MHO', 'Mayor', 'Doctor')
AND health_facility_id IN
(
SELECT health_facility_id
FROM users
WHERE scope IS NULL
);
请解释你想完成什么。样本数据和期望的结果都会有帮助。问题已更新。更新为或多或少的随机值,而不是更正错误?如何通过随机排序进行选择看这里我尝试了你的答案,但仍然相同result@Claude尝试这种新方法,现在所有仅选择查询只返回1行。,如果这也不起作用,您必须在dbfiddle.uk中构建一个示例数据库,因为我相信您最终可以对结果进行分组。同样的结果不起作用