我的SQL查询显示错误::#1242 - 子查询返回超过1行

时间:2014-06-20 07:42:45

标签: mysql

我有关于mysql的问题。

我有几张像tbl_follow,tbl_user,tbl_post_like,

这样的表

现在我想要的是我的查询应该返回如下结果:

我想要一个表中的用户ID,用户名,用户图像,用户状态 - > tbl_user, 只有当表“tbl_follow”中的“estatus”列包含值为“Active”时,我才想要跟随其他朋友(其他用户)的用户,否则如果存在“非活动”值,那么它应该返回0,因为我已编码在查询中。

tbl_follow:1.iFollowID,2.iUserID,3。iFriendID,4。eStatus

tbl_post_like:1。iPostLikeID,2。iUserID,3。iPostID

tbl_user:1.iUserID,2。vUsername,3。vImage,4。vState

现在我使用的简单查询是:

SELECT u.iUserID,
       u.vUsername,
       u.vState,
       u.vImage,

  (SELECT IF(
               (SELECT iFollowID
                FROM tbl_follow
                WHERE iUserID =249
                  AND iFriendID = 250
                  AND eStatus = 'Active')!='', 1,0)
   FROM tbl_follow) AS is_follow
FROM tbl_user u
INNER JOIN tbl_post_like l ON u.iUserID=l.iUserID
WHERE l.iPostID=21

1 个答案:

答案 0 :(得分:0)

与使用其他联接相比,不确定这方面的效果,但希望它可以正常工作:

尝试:

SELECT u.iUserID,
       u.vUsername,
       u.vState,
       u.vImage,
       IF(EXISTS
               (SELECT iFollowID
                FROM tbl_follow
                WHERE iUserID =249
                  AND iFriendID = 250
                  AND eStatus = 'Active'), 1,0) AS is_follow
FROM tbl_user u
INNER JOIN tbl_post_like l ON u.iUserID=l.iUserID
WHERE l.iPostID=21