基于SQL查询订购结果

时间:2015-07-19 07:00:01

标签: php mysql

我目前正在查询表格,查找具有特定category的项目。我已将此查询扩展为也在项目description列中查找。我的问题是,我如何订购结果,以便category匹配是第一个,描述是最后一个?

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

在上面的查询中,只添加ORDER BY category是不够的。我能想到的唯一方法是使用两个单独的结果变量进行两次单独的查询。

我正在使用phpmysqli

2 个答案:

答案 0 :(得分: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 

答案 1 :(得分: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结果都将在开始时 - 因为我没有指定,所以它被请求或接受