2013-10-25 62 views
0

我有一個用戶表:| username |高效的查詢 - 在表A查詢ID的特定組,如何可以檢查在表B中的條件爲表A中選擇的ID?

我有關係的表:| follower | following |

目前,我有一個查詢:SELECT username FROM user WHERE username IN ('A', 'B', ...)

現在,當我執行上面的查詢,我要檢查如果每個用戶都被當前用戶關注,並以某種方式在結果的另一列中指明它。就像這樣:SELECT username, is_followed FROM user WHERE username IN ('A', 'B', ...) AND "is_followed is true when username is being followed by 'CURRENT_USERNAME'"

是否有這樣做沒有foreach循環或子查詢的任何有效的方法?

任何答覆將高度讚賞。

謝謝。

回答

0

這不是完全清楚你從你的描述想要的東西。這個查詢給出了所有的被選中的用戶和一個標誌來說明他們是否被遵守。如果你只是想這之後是當前用戶的用戶然後更改left outer joininner join

Select 
    u.username, 
    case when r.following is null then 0 else 1 end is_followed 
From 
    user u 
     left outer join 
    relationship r 
     on u.username = r.following and r.follower = 'CURRENT_USERNAME' 
Where 
    u.username in ('A', 'B', ...) 

這假設有在關係表沒有重複。

0

這一個給出結果爲你解釋。

SELECT username 
      ,Case When q2.username IS NULL 
        Then 0 
        Else 1 
      END 
      As is_followed 
    FROM user q1 
    LEFT JOIN 
    (
     select Distinct following as username 
     from relationships 
     where follower = 'CURRENT_USERNAME' 
    )q2 
    on q1.username=q2.username 
    WHERE q1.username IN ('A', 'B', ...) 
相關問題