mysql子查询返回多于1行查询错误
问题描述:
我有许多邮件系统表。但我不能发送查询到MySQL。mysql子查询返回多于1行查询错误
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)
问题在哪里?
答
相关子查询不能返回多个row.This查询:
SELECT IDPHOTO FROM user WHERE messages_list.IDUSER
回报超过一排它不能做多。你需要将其限制在一排只有要么使用LIMIT
条款:
SELECT IDPHOTO FROM user WHERE messages_list.IDUSER LIMIT 1
,或者通过使用特定的密钥:
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)