| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > СУБД, общие вопросы > Сортировка по полю в котором найдено ключевое слов |
| Автор: Maksym 27.3.2006, 10:44 | ||
Вот такой простой запрос:
Необходимо чтобы в результирующей выборке сначала шли записи, в которых keyword обнаружился в field1, а после них записи для которых keyword попал в field2. Как бы это сделать? |
| Автор: LSD 27.3.2006, 10:47 | ||
Через uninon:
|
| Автор: Maksym 27.3.2006, 11:26 |
| LSD Спасибо А если какая нибудь запись будет удовлетворять обоим SELECTам - он вадь попадет в выборку дважды? или я ошибаюсь.. |
| Автор: LSD 27.3.2006, 11:38 |
| Да. В принципе можно включить туда дополнительное условие not (like...), но это не здорово с точки зрения производительности. |
| Автор: ТоляМБА 27.3.2006, 11:44 | ||||
| Если я не ошибаюсь, то в MS SQL Server 2000: так попадут по одной записи на разные условия (если запись есть и по 1-му и по 2-му условию)
а так попадут все записи с поторяющимися значениями по обоим условиям
(развница в запросах в слове ALL) |
| Автор: Maksym 27.3.2006, 12:21 |
| Работаю в postgresql |
| Автор: LSD 27.3.2006, 13:26 |
| Попробуй union distinct. |
| Автор: Maksym 6.4.2006, 11:12 |
| SELECTы успешно выполняются, с помощью UNIONа объединяются, но итоговый набор данных перемешался все равно, отсортирован по первичному ключу, если не указано иное. |
| Автор: Maksym 6.4.2006, 11:48 |
| Да, почитал документацию, на результат UNION накладывается общая сортировка. Получить результаты заросов последовательно - не получается. |
| Автор: chief39 6.4.2006, 15:58 | ||||
| Стоп... насколько знаю, distinct только для селекта, поскольку по умолчанию он гребёт всё. А юнион дублирующиеся строки выбрасывает(дефолт). Ему насильно нао указывать ALL Из-за этого стандарт SQL и попинывали. Maksym, попробуй сиё:
Только что прогнал на оракле. Имхо - везде должно отработать - самый что ни на есть стд. скл. Добавлено @ 16:06 Аааа... пардон, зачитался комментами - вопрос проглядел...
Дополнительная колонка - для разделения записей по резалтсетам - в итоге её просто не отображай(не используй) ;) |
| Автор: Maksym 13.4.2006, 12:27 |
| chief39 не пойму чтото... ввести дополнительную колонку?.. |
| Автор: batigoal 13.4.2006, 13:49 |
| Да, но не в таблице, а в результате запроса. При обработке этого результата - игнорировать. |
| Автор: chief39 13.4.2006, 19:49 | ||||
| Это колонка времени запроса, а значения - константы. Ты можешь указывать конкретные поля из селектируемых таблиц или константы. В случае констант - они равны для любой строчки резалтсета. То есть
даст
В твоём случае - это пока единственное и совсем несложное решение твоего вопроса |
| Автор: Maksym 18.4.2006, 14:35 |
| chief39 Ну так проблема одинаковых записей не решается... За счет дополнительной виртуальной колонки строки с одинаковыми значениями теряют свою уникальность и UNION их не ообъединяет в одну... |