В SQL, как я могу получить строку с определенным значением столбца, если доступно, в противном случае любая другая строка - PullRequest
1 голос
/ 14 июля 2009

В настоящее время у меня есть следующая таблица продуктов:

Product
_______
id, INT
name, String
featured, ENUM(Y, N)

Если в указанном выше есть рекомендуемый товар, я верну этот товар. Если ничего из вышеперечисленного не указано, я верну кого-либо из них. В настоящее время у меня есть следующий запрос, который является функциональным:

SELECT *
FROM Product
WHERE (featured = 'Y' OR featured = 'N')
LIMIT 1

У кого-нибудь есть возражения по поводу вышеприведенного SQL, вроде бы что-то не так? Если так, что было бы лучшим способом сделать это? Выше приведен простейший случай гораздо большего запроса. Я мог бы использовать ORDER BY признакам, но это ничего не делает для продвижения рекомендуемого продукта в начало моего списка.

1 Ответ

5 голосов
/ 14 июля 2009

Это должно сделать это. Вы принудительно вводите значения «Y» в начало списка.

SELECT *
FROM Product
ORDER BY CASE WHEN featured = 'Y' THEN 0 ELSE 1 END
LIMIT 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...