2012-02-07 102 views
1

我有一個4列(id,發送者,接收者,狀態)的朋友,我需要一個查詢,將統一(團聚,我不知道英文單詞)發送者和接收者列其中發送者和接收者都等於讓說2. 例如表看起來像這樣mysql combine 2列在哪裏條件

| sender | receiver | 
| 2 | 10  | 
| 2 | 8  | 
| 2 | 9  | 
| 6 | 2  | 
| 7 | 3  | 
| 10 | 3  | 

而查詢後,將顯示:(第一3行示出因爲發送方= 2,則顯示第四行是因爲接收器是2.其餘行未顯示)

| result | 
| 10 | 
| 8 | 
| 9 | 
| 6 | 
+0

好,因爲我需要它,你可以在結果表中看到的,只有包括尊重發件人或/和接收者(不知道)的條件的值等於2. – 2012-02-07 16:28:54

+0

從來沒有想過這個問題。我已經更新了我的答案。 – 2012-02-07 16:32:02

回答

1

您幾乎擁有正確的關鍵字;聯盟會讓你做你想做的。

SELECT `receiver` as `result` FROM `table` WHERE `sender` = 2 
UNION 
SELECT `sender` as `result` FROM `table` WHERE `receiver` = 2 
+0

爲什麼'>'而不是'='? – danihp 2012-02-07 16:35:58

+0

對不起,誤讀了這個問題。編輯答案。 – 2012-02-07 16:39:52

1
select 
case when sender = 2 
then receiver 
else sender 
end 
from friends 
where sender = 2 or receiver = 2 
1

這是您的查詢,我希望有你有意義:

Select sender as result 
from friends 
where receiver = 2 
union 
Select receiver as result 
from friends 
where sender = 2 
0
SELECT * 
FROM 
    (SELECT sender as iResult 
    FROM friends 
    WHERE receiver = 2 
     UNION 
    SELECT receiver as result 
    FROM friends 
    WHERE sender = 2) c 
ORDER BY c.iResult DESC