powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Помогите составить запрос два-в-одном
7 сообщений из 7, страница 1 из 1
Помогите составить запрос два-в-одном
    #33429436
Помогите составить такой двойной запрос:
Делаю поиск по сайту и нужно, чтоб сначала выводились результаты с точным совпадением (WHERE name LIKE '%Search Query%'), а после них поиск по любому из слов запроса(WHERE name LIKE '%Search%' OR name LIKE '%Query%')

Причем необходимо, чтоб второй запрос не выдавал также и записи первого.

Возможно, тут надо как-то объединить два запроса?
...
Рейтинг: 0 / 0
Помогите составить запрос два-в-одном
    #33429465
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если делать прямолинейно, то получается что-то типа такого:
Код: plaintext
1.
2.
3.
4.
SELECT  1 , table_name.* FROM table_name WHERE name LIKE '%Search Query%'
UNION ALL
SELECT  2 , table_name.*  FROM table_name WHERE (name LIKE '%Search%' OR name LIKE '%Query%') AND name NOT LIKE '%Search Query%'
ORDER BY  1 
возможны вариации:
Код: plaintext
1.
2.
3.
4.
5.
6.
SELECT  1 , table_name.* FROM table_name WHERE name LIKE '%Search Query%'
UNION ALL
SELECT  2 , table_name.*  FROM table_name WHERE name LIKE '%Search%' AND name NOT LIKE '%Search Query%'
UNION ALL
SELECT  3 , table_name.*  FROM table_name WHERE name LIKE '%Query%' AND name NOT LIKE '%Search Query%'
ORDER BY  1 
...
Рейтинг: 0 / 0
Помогите составить запрос два-в-одном
    #33429467
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoft
Код: plaintext
1.
2.
3.
SELECT  2 , table_name.*  FROM table_name WHERE name LIKE '%Search%' AND name NOT LIKE '%Search Query%'
UNION ALL
SELECT  3 , table_name.*  FROM table_name WHERE name LIKE '%Query%' AND name NOT LIKE '%Search Query%'

был не прав, т.к. здесь возможны дубли
...
Рейтинг: 0 / 0
Помогите составить запрос два-в-одном
    #33429543
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
SELECT if(name like '%Search Query%', 1 , 2 ), *  FROM mytable
 WHERE (name LIKE '%Search%' OR name LIKE '%Query%') ORDER BY  1 ;
работает? :)
------------------
- А как в Интеpнете pаботать? - Сначала нужно узнать, что вам нужно rtfm
...
Рейтинг: 0 / 0
Помогите составить запрос два-в-одном
    #33429660
DocAl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вы уверены, что возможности полнотекстового поиска вам не подходят.
Потому как запросы вида LIKE '%pattern%' можно использовать только если вам вообще не важна производительность.
...
Рейтинг: 0 / 0
Помогите составить запрос два-в-одном
    #33434139
Думаю подходят. Я только что узнал об этом поиске :)

Пытаюсь составить запрос, подобно тому, как это описано в статье
http://www.opennet.ru/base/dev/mysql_search.txt.html

SELECT *, MATCH songs.name AGAINST ('Query') as relev FROM songs ORDER BY relev DESC

songs.name как FullText

Но запрос не работает. relev у всех 0. Записи отсортированы по id
...
Рейтинг: 0 / 0
Помогите составить запрос два-в-одном
    #33434168
Фотография Валентин К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Возможно нужно поставить полнотектовый индекс по искомому полю...
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Помогите составить запрос два-в-одном
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]