MySQL条件连接

| 正如您在下面看到的,我正在检查当前用户是否在表好友的
user_a
user_b
列中。 根据当前用户所在的位置,我想认识他的相应朋友。 不知何故,我无法使该语法正常工作,并且想知道是否有人可以告诉我这是什么错误(我在32ѭ附近的第3行出现错误。
SELECT *
  FROM friends
IF user_a = 2 THEN
  JOIN user_profiles ON friends.user_b = user.profiles.user_id
 WHERE user_a = 2
   AND accepted = 1;
ELSEIF user_b = 2 THEN
  JOIN user_profiles ON friends.user_a = user_profiles.user_id
 WHERE user_b = 2
   AND accepted = 1;
END IF;
    
已邀请:
        您可以使用UNION来做到这一点:
select f.*, up_a.* from friends f
  inner join user_profiles up_a on f.user_a=up_a.user_id
  where f.user_b=2 and f.accepted=1
union
select f.*, up_b.* from friends f
  inner join user_profiles up_b on f.user_b=up_b.user_id
  where f.user_a=2 and f.accepted=1;
    
        您正在发明语法。 MySQL中的\“ IF \”支持如下: 语句,用于存储过程和触发器。文件: http://dev.mysql.com/doc/refman/5.0/zh-CN/if-statement.html 函数,用于为结果列选择替代表达式之一。文件:http://dev.mysql.com/doc/refman/5.0/en/control-flow-functions.html#function_if 您似乎完全在做其他事情。     
        我认为您尝试使用的语法不受支持。我认为您不能以这种方式使用
IF
条件分支您的SQL语句。可以将其装入
SELECT CASE
。 如果您可以使用局部变量,则可以遵循以下方法:
BEGIN
SELECT user_a, user_b INTO local_a, local_b FROM friends;

IF local_a = 2 THEN
  SELECT * FROM friends JOIN user_profiles ON friends.user_b = users.profiles.user_id
  WHERE user_a = 2 AND accepted = 1;
ELSEIF user_b = 2 THEN
  SELECT * FROM friends JOIN user_profiles ON friends.user_b = users.profiles.user_id
  WHERE user_b = 2 AND accepted = 1
END IF;
END;
我也不确定这样做是否正确,但它可能使您走上正确的道路。另请参见:http://dev.mysql.com/doc/refman/5.0/en/select-into-statement.html     

要回复问题请先登录注册