mysql子查询返回多行查询错误
我有许多用于消息传递系统的表。但我无法将查询发送到mysqlmysql子查询返回多行查询错误,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,
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)