MySQLi: ВЫБРАТЬ приоритет с помощью ИЛИ - PullRequest
0 голосов
/ 17 июля 2010

У меня есть таблица photos в базе данных, которая использует столбец status, чтобы определить, была ли фотография подтверждена или нет ...

, поэтому, если фотография имеет status = 0, то ее нетподтверждено, но если status = 1, то фотография была подтверждена.

Я хочу добавить status = 2 для выбора фотографии в качестве "основной фотографии", чтобы я мог использовать

SELECT photo WHERE status = 2

, ноесли не выбрано «основное фото», я хочу выбрать любую другую фотографию, но отдать приоритет фотографии со статусом = 2, если она доступна .. поэтому я хочу использовать что-то вроде этого:

SELECT photo WHERE status = 2 OR status != 2

... но отдавая приоритет фотографии со статусом 2 ... поэтому, если есть фотография с status 2, она выберет эту фотографию, но если ее нет, можно выбрать любую фотографию ...

Это возможно сделать?

Ответы [ 4 ]

1 голос
/ 18 июля 2010

Я бы посоветовал вам добавить еще один столбец для хранения этого факта.Если вы этого не сделаете, рано или поздно (скорее всего, раньше) появится другое значение статуса, и тогда возникнет путаница, особенно если столбец состояния может иметь несколько значений (например, 3 = проверено и основное фото).

0 голосов
/ 17 июля 2010

Если status=2 всегда имеет самый высокий приоритет:

SELECT photo WHERE status = 2 OR status != 2 FROM your_table_name ORDER BY status

Или лучше:

 SELECT photo FROM your_table_name ORDER BY status

, потому что status = 2 OR status != 2 - это все

0 голосов
/ 17 июля 2010

если статус = 2 НЕ всегда является наивысшим приоритетом, вы все равно можете получить первые строки со статусом = 2, а затем все остальные:

SELECT photo FROM table ORDER By status=2 desc
0 голосов
/ 17 июля 2010

Попробуйте это:

SELECT photo, status = 2 AS priority
FROM table
ORDER BY priority DESC

Здесь выражение status = 2 будет оцениваться как 1 (status = 2 верно) или 0 (status = 2 неверно).

...