Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/70.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子查询返回多行查询错误_Mysql_Sql_Subquery - Fatal编程技术网

mysql子查询返回多行查询错误

mysql子查询返回多行查询错误,mysql,sql,subquery,Mysql,Sql,Subquery,我有许多用于消息传递系统的表。但我无法将查询发送到mysql SELECT messages_list.IDUSER, messages_list.IDPAGE, messages_list.IDUSER, messages_list.v_readed, messages_list.IDUSER, messages_texts.v_text,

我有许多用于消息传递系统的表。但我无法将查询发送到mysql

SELECT 
            messages_list.IDUSER,
            messages_list.IDPAGE,
            messages_list.IDUSER,
            messages_list.v_readed,
            messages_list.IDUSER,
            messages_texts.v_text,
            messages_texts.v_time,
            messages_subjects.v_title,
            user_photos.v_photoURL,
            user.v_sex,
            (SELECT IDPHOTO FROM user WHERE messages_list.IDUSER)
        FROM 
            messages_texts,
            user
        INNER JOIN user_photos ON user_photos.ID=user.IDPHOTO AND user_photos.v_active='1' 
        INNER JOIN messages_list ON messages_list.IDUSER=717306 AND messages_list.v_active='1'
        INNER JOIN messages_subjects ON messages_list.IDSUBJECT=messages_subjects.ID
        INNER JOIN messages_users ON messages_users.IDSUBJECT=messages_subjects.ID AND messages_users.IDUSER=user.ID
        WHERE
            messages_users.IDUSER<>717306  
        GROUP BY messages_subjects.ID
        ORDER BY messages_list.ID
    )\n: (Subquery returns more than 1 row)

问题出在哪里???

相关子查询不能返回多行。此查询:

SELECT IDPHOTO FROM user WHERE messages_list.IDUSER
返回多个它无法执行的行。您需要使用limit子句将其限制为仅一行:

或者使用特定的键:

SELECT IDPHOTO FROM user WHERE messages_list.IDUSER WHERE id=1

问题在于此子查询:

        (SELECT IDPHOTO FROM user WHERE messages_list.IDUSER)
它嵌套在select语句中,因此它应该只返回一个值。where子句只包含IDUSER值。假设该字段为整数,则只要该值不是0,就会返回true。所以,它基本上会返回所有用户

您可能希望为特定用户创建一个/IDPHOTO:

        (SELECT IDPHOTO FROM user WHERE messages_list.IDUSER = user.ID)
        (SELECT IDPHOTO FROM user WHERE messages_list.IDUSER = user.ID)