Задать вопрос
Protossan
@Protossan
студент

Как сохранить порядок выборки при OR?

Задача - сделать выборку из таблицы с условием
Так как таблица большая, то делать UNION нет смысла - выборка длится очень долго
select * from posts where id<>'".formatstr($id)."' and cat='".$cat."' and `nazv` LIKE '%".$worldT[0]."%'  
UNION 
(select * from posts where id<>'".formatstr($id)."' and cat='".$cat."') limit $lim,30


Пробую сделать

select * from posts where id<>'".formatstr($id)."' and ((cat='".$cat."' and `nazv` LIKE '%".$worldT[0]."%') OR  (cat='".$cat."'))


но в выдаче сразу идут посты со второго условия. А мне надо чтоб если нету первого условия cat='".$cat."' and `nazv` LIKE '%".$worldT[0]."%', то лишь тогда подтягивались со второго cat='".$cat."' и при этом запрос не длился долго как в случае с UNION
  • Вопрос задан
  • 38 просмотров
Подписаться 1 Средний Комментировать
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
UNION, как и OR не гарантирует порядок строк в результате. Для этого служит ORDER BY.
SELECT *
  FROM `posts`
  WHERE `id` != :id AND `cat` = :category
  ORDER BY `nazv` LIKE CONCAT('%', :word, '%') DESC
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы