[ЗАКРЫТО] [MySQL] Узнать позицию в списке
^
SELECT id, FIND_IN_SET( id, concat_ws( ',', 4, 3 ) )
FROM test
ORDER BY ( id IN ( 4, 3 ) ) DESC,
FIND_IN_SET( id, concat_ws( ',', 4, 3 ) ) ASC,
id ASC;
За использование строковых функций - низачот
![](/images/graemlins/frown.gif)
Вчера перерыл весь refman mysql - ничего такого не нашёл, и такую функцию он не знает...
Взял, кажется, с сайта mysql. Могу кинуть, если надо (3.5М)
Отсюда?
А к какой версии?
А к какой версии?
This is the Reference Manual for the MySQL Database System. It documents MySQL up to Version 5.0.4-beta, but is also applicable for older versions of the MySQL software (such as 3.23 or 4.0-production) because functional changes are indicated with reference to a version number.
Because this manual serves as a reference, it does not provide general instruction on SQL or relational database concepts. It also does not teach you how to use your operating system or command-line interpreter.
The MySQL Database Software is under constant development, and the Reference Manual is updated frequently as well. The most recent version of the manual is available online in searchable form at http://dev.mysql.com/doc/. Other formats also are available, including HTML, PDF, and Windows CHM versions.
Это на первой страничке моего файла написано.
thx
SELECT `id` FROM `test` ORDER BY FIND_IN_SET(`id`,concat_ws(',',3,4 DESC,`id` ASC
выглядит покрасивее, хоть и изврат получается с переворачиванием множества.
Можно же написать UNION и не париться? или это не "одним запросом"?
А если их тысяча?
И чем он так хуже для больших множеств относительно других решений?
Или я чего-то не понимаю, или ты предлагаешь для множества из тысячи элементов делать UNION из тысячи SELECT'ов?
Нет, я предлагаю сделать UNION запросов, выбирающего строку по списку и выбирающего строку по возрастанию.
запросов, выбирающего строку по спискуЧТобы в этом запросе данные были упорядочены по позиции в списке - всё равно надо испоьльзовать что-то типа FIND_IN_SET (или делать запрос с тысячей UNION'ов).
Оставить комментарий
kruzer25
Хочется выбрать одну строку таблицы. у которой ID из заданного списка, причём имеет наименьшую позицию в списке; иначе - наименьший ID - то есть, например, для списка (3,2) в первую очередь должна подойти строка с ID=3, во вторую - с ID=2, в третью - с ID=1, в четвёртую - с ID=4 ну и дальше - по возрастанию ID...Как это можно сделать одним запросом?