- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Зачем быть уникальным в мире, где все можно скопировать
Почему так важна уникальность текста и как она влияет на SEO
Ingate Organic
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Приветствую
Такая значит задача
Есть таблица
id|number
1|451236
2|123
3|123456
4|7893
5|65123
6|908761
7|123
И я делаю запрос на поиск 123
SELECT * FROM table WHERE number LIKE='123' OR number LIKE=%123%
Мне вывело результат
Подскажите как его отсортировать сначала по LIKE='123' а потом по LIKE=%123%
то есть мне сначала нужны те записи в которых number=123
а потом где присутствует 123
теперь представьте, что будет с вашим запросом, если ищем 234 по этим данным
1234
2345
теперь представьте, что будет с вашим запросом, если ищем 234 по этим данным
1234
2345
Первыми будут соответствие 234, а дальше вхождения:
234
1234
2345
используйте find_in_set для подобных вещей
select * from tedd
Результат:
select *, (position('55' in number)) as srt from tedd where number like('%55%') order by srt
Результат:
Немного туповато, но есть результат
Я в таких вопросах всегда спрашиваю - а зачем Вам это?
Может есть решение более элегантное
насчет LIKE='123' я бы вообще бы подумал =) так как лайк очень затратный всегда был =)
Первыми будут соответствие 234, а дальше вхождения:
234
1234
2345
А нет в таблице значения 234. Есть всего две строки 1234 и 2345
Соответственно запрос
вернет
1234
2345
потому как ORDER BY `number`
используйте find_in_set для подобных вещей
Может подскажите как?
Можно в выборку добавить что-то типа If(number = 234, 0, 1) AS srt и впоследствии сортировать и по srt и по number.
---------- Добавлено 24.01.2016 в 01:10 ----------
То есть, примерно так:
SELECT *, If(number = '234', 0, 1) AS srt FROM table WHERE number LIKE '%123%' ORDER BY srt, number;
Может подскажите как?
Такой костылек?
SELECT id, number, (number LIKE '123%')*10+(number LIKE '123')*100 as ord FROM test WHERE number LIKE '%123%' order by ord desc;