Как вернуться к условию вторичного поиска в предложении sqlite WHERE? - PullRequest
1 голос
/ 13 февраля 2020

Предположим, что у меня есть таблица, подобная этой

id title  name
---------------
1  sales   Alex
2  sales   Bob
3  manager Sam
4  manager Willy

Когда я запрашиваю эту базу данных, у меня всегда будет доступное действительное значение для столбца title, но может не иметь действительного значения для name столбец.

Как мне создать оператор SELECT * FROM table_name WHERE, который сначала ищет строку, которая соответствует title='value' AND name='value', и если это не возвращает результат, то возвращается к простому возвращению первого вхождения строка, которая соответствует title='value'? Я пытаюсь выполнить sh в одном запросе.

Например, если запрашивается title='sales' AND name='Bob', возвращается вторая строка. Однако если для name установлено значение null или empty (title по-прежнему title='sales'), возвращается только первая строка.

1 Ответ

1 голос
/ 13 февраля 2020
SELECT * 
FROM   mytable t 
WHERE  t.title = 'sales' 
       AND ( t.name = 'something' 
              OR NOT EXISTS (SELECT * 
                             FROM   mytable t2 
                             WHERE  t2.title = t.title 
                                    AND t2.name = 'something') ) 
LIMIT  1; 
...