2015-07-19 3 views
0

В настоящее время я запрашиваю таблицу для элементов с определенным значением category. Я продлил этот запрос и посмотрел также на столбец description. Мой вопрос: как мне упорядочить результаты, чтобы первые совпадения совпали, а описание является последним?Результаты на основе запроса SQL

`SELECT * FROM myTable WHERE `category` LIKE '%keyword%' || `description` LIKE '%keyword%' 

В моем запросе выше простое добавление ORDER BY category не будет достаточно. Единственный способ, которым я могу это сделать, - это два отдельных запроса с двумя отдельными переменными результата.

Я использую php и mysqli

+0

Я бы пошел с двумя запросами. – QueryLars

ответ

1

Это может быть сделано как этот

SELECT * 
FROM myTable 
WHERE `category` LIKE '%keyword%' || `description` LIKE '%keyword%' 
ORDER BY 
    CASE 
     WHEN `category` LIKE '%keyword%' THEN 1 
     WHEN `description` LIKE '%keyword%' THEN 0 
END 
+0

Я никогда не думал о заявлении дела. Благодарю. –

0

Это может быть сделано как этот

SELECT * 
FROM myTable 
WHERE `category` LIKE '%keyword%' || `description` LIKE '%keyword%' 
ORDER BY 
    CASE 
     WHEN `category` LIKE '%keyword%' THEN 1 
     ELSE 0 
    END CASE 
     DESC 

Если вы хотели бы расширить, что SQL запрос и сохранить эти заказы, вы можете использовать:

SELECT * 
FROM myTable 
WHERE `category` LIKE '%keyword%' || `description` LIKE '%keyword%' 
ORDER BY 
    CASE 
     WHEN `category` LIKE '%keyword%' THEN 1 
     ELSE 0 
    END CASE 
     DESC, 
    CASE 
     WHEN `description` LIKE '%keyword%' THEN 1 
     ELSE 0 
    END CASE 
     DESC 

Результаты, каковы как description результаты и category результаты, будут начинаться - как это не было указано, я полагаю, что так она запрашивается или принимается.

Смежные вопросы