2012-01-18 201 views
0

我希望能夠從列中選擇值,其中列a或b不是我指定的值。使用IF語句的MySQL查詢

讓我來解釋一下。

我有一個表的哥們,在網站上,類似這樣的:

columna  | columnb 
    6774    887 
    887     2423 
    3434     887 
    3434     6774 
    887     3455 
    887     33444 
    343434    2343 

Columna告訴你誰發送的請求。

我們的用戶目前是887,如何使用MySQL我可以找出他是誰的朋友?

感謝

+0

什麼是b列,而什麼是兩列之間的關係? – 2012-01-18 20:23:52

+0

如果你能解釋什麼是columnb,那會幫助我理解你在做什麼。 – 2012-01-18 20:24:50

+0

這兩列都是id的成員。第一個只是發送請求的人。還有一個列的狀態,如果這是0,那麼請求還沒有得到滿足,如果它的1,那麼它已經贊成,這兩個人是朋友 – Jake 2012-01-18 20:29:03

回答

2
SELECT (CASE WHEN columna = 887 THEN columnb ELSE columna END) AS 'columnAlias' 
FROM <table> 
WHERE columna = 887 
     OR columnb = 887 

編輯:使用上述查詢的結果來獲得從另一個表詳細記錄.. 。

使用JOIN:

SELECT T2.* 
FROM Table2 AS T2 
    INNER JOIN (SELECT (CASE WHEN columna = 887 THEN columnb ELSE columna END) AS 'columnAlias' 
       FROM Table1 
       WHERE columna = 887 
         OR columnb = 887) AS _Temp ON _Temp.columnAlias = T2.ForeignKeyColumn 

使用嵌套查詢:

SELECT T2.* 
FROM Table2 AS T2 
WHERE T2.ForeignKeyColumn IN (SELECT (CASE WHEN columna = 887 THEN columnb ELSE columna END) AS 'columnAlias' 
           FROM Table1 
           WHERE columna = 887 
            OR columnb = 887) 
+0

這個工程!但我怎麼能進一步修改它來選擇信息基於從另一個表887沒有列?謝謝! – Jake 2012-01-18 20:31:15

+0

也許將這個查詢嵌套在另一個...'SELECT * FROM where someColumn IN(... 2012-01-18 20:36:23

+0

感謝您的回覆,即時通訊閱讀加入,即時通訊嘗試和做到這一點,如果我的智力讓我 – Jake 2012-01-18 20:39:54

0

你可能需要WHERE語句和查詢看起來像SELECT ... WHERE columna = 887 OR columnb = 887

0

選擇多列很容易

SELECT columna, columnb FROM ... 

然後排除其中的值不匹配,你可以使用WHERE子句

結果
... WHERE (columna != 887 OR columnb != 887) 
+0

哇..你只是用EXCEPTION幾乎把整個數據庫拉到了任何一個位置的夥計= 887。那麼ColumnA = 23和ColumnB = 54892哪一行會包含在結果集中呢? – DRapp 2012-01-18 20:43:30

0

在哪裏認定該夥伴「887」處於任何位置......你不在乎。選擇欄會得到其他ID ...因此,如果A = 887點,然後抓住B,否則是「B」,這是887,並得到人A.

select 
     if(b.ColumnA = 887, b.ColumnB, b.ColumnA) as OtherPerson 
    from 
     Buddies b 
    where 
     887 in(b.ColumnA, b.ColumnB) 
0

請務必團結條件的櫃面多個條件:

凡(!A = 1或b = 1) 和c =東西