Выберите запрос, но покажите результат из записи № 3 - PullRequest
0 голосов
/ 24 ноября 2011

У меня есть простой запрос:

SELECT * FROM table 

Вы все знаете результат:

|id|   foo   |    bar   |
-------------------------
|1 |   aaa   |    123   |
|2 |   bbb   |    234   |
|3 |   ccc   |    345   |
|4 |   ddd   |    456   |

а что я хочу сделать шоу из записи № 3? Я знаю, что могу сделать это с помощью SELECT * FROM table where id=3, но мне нужно установить выбранную мной запись в первом ряду, скажем, я выбрал id=3, поэтому результат будет следующим:

|id|   foo   |    bar   |
-------------------------
|3 |   ccc   |    345   |
|4 |   ddd   |    456   |
|1 |   aaa   |    123   |
|2 |   bbb   |    234   |

или

|id|   foo   |    bar   |
-------------------------
|3 |   ccc   |    345   |
|1 |   aaa   |    123   |
|2 |   bbb   |    234   |
|4 |   ddd   |    456   |

возможно ли это?

1 Ответ

1 голос
/ 24 ноября 2011

Таким образом, вы получите id = 3 сначала:

SELECT *
FROM tbl
ORDER BY (id = 3) DESC
-- ,id

Заказ по id дополнительно, если вы хотите, чтобы остальные заказали тоже.

Пояснение:

Выражение оценивается как логическое . FALSE (= 0 в mysql) сортируется до TRUE (= 1 в mysql), поэтому мы заказываем по убыванию.

Он также автоматически охватывает случай id, являющийся NULL. Я цитирую руководство снова здесь :

При выполнении операции ORDER BY значения NULL отображаются первыми, если вы ORDER BY ... ASC и последний, если вы делаете ORDER BY ... DESC.

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