Условный SELECT на основе IF EXISTS в MySql - PullRequest
0 голосов
/ 28 февраля 2019

Есть таблица пользователей.Основываясь на данных 2 столбцов, мне нужно выбрать строки.

Допустим, эти 2 столбца: ID и ID_API .

Итак, при выборке данных,Мне нужно найти 1-й, если для данного значения существует в столбце ID_API, а затем выбрать эту строку.Иначе используйте ID в состоянии WHERE.

Вот как выглядит

IF EXISTS (SELECT * FROM users WHERE ID_API= '12345')
BEGIN
    SELECT * FROM users WHERE ID_API= '12345'
END
ELSE
BEGIN
   SELECT * FROM users WHERE ID_= '12345'
END

Как им управлять?

1 Ответ

0 голосов
/ 28 февраля 2019

В общем случае вы можете искать строки с ID_API = 12345 или строки с ID = 12345 , пока нет строки с ID_API = 12345:

SELECT *
FROM users
WHERE ID_API = '12345' OR
      ID = '12345' AND NOT EXISTS (SELECT * FROM users WHERE ID_API = '12345')

В особом случае, когда на пользователя имеется только одна строка, вы можете сделать это, выполнив поиск либо ID_API = 12345, либо ID = 12345, а затем упорядочив результаты по убыванию ID_API = 12345 (так как это вернет значение 1, еслиэто правда) и использование LIMIT 1 для ограничения до 1 строки.

SELECT * 
FROM users 
WHERE ID_API = '12345' OR ID = '12345'
ORDER BY ID_API = '12345' DESC
LIMIT 1
...