2012-01-18 127 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 =东西