我目前正在查询表格,查找具有特定category
的项目。我已将此查询扩展为也在项目description
列中查找。我的问题是,我如何订购结果,以便category
匹配是第一个,描述是最后一个?
`SELECT * FROM myTable WHERE `category` LIKE '%keyword%' || `description` LIKE '%keyword%'
在上面的查询中,只添加ORDER BY category
是不够的。我能想到的唯一方法是使用两个单独的结果变量进行两次单独的查询。
我正在使用php
和mysqli
答案 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
结果都将在开始时 - 因为我没有指定,所以它被请求或接受