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)