使用IF语句进行MySQL查询

时间:2012-01-18 20:19:49

标签: mysql sql if-statement

我希望能够从任一列中选择值,其中列a或b不是我指定的值。

让我解释一下。

我在网站上有一张桌子,好像这样:

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

Columna告诉您是谁发送了请求。

我们的用户目前是887,如何使用MySQL我能找出他是谁的朋友?

由于

5 个答案:

答案 0 :(得分: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)

答案 1 :(得分:0)

您可能需要WHERE语句,查询看起来像SELECT ... WHERE columna = 887 OR columnb = 887

答案 2 :(得分:0)

轻松选择多列

SELECT columna, columnb FROM ...

然后要排除值不匹配的结果,可以使用WHERE子句

 ... WHERE (columna != 887 OR columnb != 887)

答案 3 :(得分:0)

WHERE有资格说伙伴“887”处于EITHER位置......你不在乎。选择FIELD将获得OTHER 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 )

答案 4 :(得分:0)

确保在更多条件的情况下将条件统一起来:

其中(a!= 1或b!= 1) 和c =某事