MySQL запрос с IF Statement - PullRequest
       3

MySQL запрос с IF Statement

0 голосов
/ 19 января 2012

Я хочу иметь возможность выбирать значения из любого столбца, где столбец a или b не является значением, которое я указываю.

Позвольте мне объяснить больше.

У меня есть таблица издрузья на сайте, например:

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

Колумна сообщает вам, кто отправил запрос.

Наш пользователь в настоящее время 887, как с помощью MySQL я могу узнать, с кем он дружит?

Спасибо

Ответы [ 5 ]

2 голосов
/ 19 января 2012
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 голосов
/ 19 января 2012

Убедитесь, что вы объединяете условие в несколько условий:

Где (a! = 1 или b! = 1) и с = что-то

0 голосов
/ 19 января 2012

ГДЕ квалифицирует, что приятель "887" находится в ЛЮБОЙ позиции ... вам все равно.Выбранное ПОЛЕ получит ДРУГОЙ ИД ... поэтому, если 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 голосов
/ 19 января 2012

Выбор нескольких столбцов прост

SELECT columna, columnb FROM ...

Затем, чтобы исключить результаты, ГДЕ значение не совпадает, вы можете использовать предложение WHERE

 ... WHERE (columna != 887 OR columnb != 887)
0 голосов
/ 19 января 2012

Возможно, вам нужен оператор WHERE , и запрос будет выглядеть как SELECT ... WHERE columna = 887 OR columnb = 887

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...