Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 如何修复:错误代码:1242。子查询返回超过1行_Mysql_Sql - Fatal编程技术网

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中构建一个示例数据库,因为我相信您最终可以对结果进行分组。同样的结果不起作用