【发布时间】:2015-11-02 20:48:00
【问题描述】:
我写了一个查询,我正在检查用户是否将他的隐私设置为每个人,它将返回该结果,如果用户设置为网络,那么当前用户在我的情况下,它的 5 将检查用户是否必须是他的朋友或朋友朋友,如果它设置为朋友,那么用户应该是他的朋友:
我尝试了这个查询,但问题是它给出了一个错误:
#1241 - 操作数应包含 1 列
有什么方法可以用不同的方式编写这个查询并获得适当的结果。
SELECT `U`.`UserGUID`, `U`.`FirstName`, `U`.`LastName`
FROM (`Users` U)
LEFT JOIN `UserPrivacy` UP ON `UP`.`UserID`=`U`.`UserID`
WHERE `UP`.`PrivacyLabelKey` = 'group_invite'
AND
IF(UP.Value='everyone',true,'')
OR
(UP.Value='network',U.UserID IN(SELECT F2.FriendID FROM Friends F JOIN Friends F2 ON F.FriendID = F2
.UserID WHERE F.UserID = 5 AND F2.Status='1' AND F.Status='1' GROUP BY F2.FriendID),'')
OR
(UP.Value='friend',U.UserID IN(SELECT FriendID FROM Friends WHERE UserID=5 AND Status=1),'')
AND U.UserID!=5
GROUP BY `U`.`UserID`
【问题讨论】:
-
IF(UP.Value='everyone' OR (UP.Value='network',U.UserID IN(SELECT F2.FriendID FROM Friends F JOIN Friends F2 ON F.FriendID = F2 .UserID WHERE F.UserID = 5 AND F2.Status='1' AND F.Status='1' GROUP BY F2.FriendID)) OR (UP.Value='friend',U.UserID IN(SELECT FriendID FROM Friends WHERE UserID=5 AND Status=1) )....更新查询并试一试 -
请提供您的表结构..with CREATE 语句