SQL SELECT中的IF..ELSE语句?

时间:2013-05-04 18:30:53

标签: sql subquery feed if-statement

我正在尝试创建一个用户活动供稿,该供稿仅显示作为已登录用户的朋友的用户活动。

字段user1和user2是朋友请求发件人和朋友请求接收者。问题是登录用户可能在任何一个字段中,所以我想知道如何为这个特定问题制作一个if..else语句。

基本上我想要:

IF user2 is $log_username SELECT user1 FROM friends...
ELSE
SELECT user2 FROM friends.

粗体代码(子查询)是我特指的那个。

$sql = "
SELECT * FROM status 
WHERE author in (
        SELECT user2 FROM friends 
        WHERE user1='$log_username'
          AND accepted='1' 
           OR user2='$log_username' 
          AND accepted='1'
    ) AND type='a' 
";

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:1)

使用UNION:

$sql = "SELECT * FROM status WHERE author IN  
    (SELECT user1 FROM friends WHERE user1='$log_username' AND accepted='1'
     UNION 
    SELECT user2 FROM friends WHERE user2='$log_username' AND accepted='1')";

答案 1 :(得分:0)

SQL语句中的IFCASE。这样的事情(不确定这是否能给你你想要的东西,只是为了展示这个概念)。

$sql = "
SELECT * FROM status 
WHERE author in (
        SELECT CASE WHEN user2 = '$log_username' THEN user1 ELSE user2
               END
         FROM friends 
        WHERE user1='$log_username'
          AND accepted='1' 
           OR user2='$log_username' 
          AND accepted='1'
    ) AND type='a' 
";