[英]Order results based on SQL query
我目前在表中查询具有特定category
项目。 我已将此查询扩展为也可以在项目description
列中查找。 我的问题是,如何排序结果,以便category
匹配为第一,描述为最后?
`SELECT * FROM myTable WHERE `category` LIKE '%keyword%' || `description` LIKE '%keyword%'
在我上面的查询中,仅添加ORDER BY category
不够的。 我能想到的唯一方法是两个单独的查询以及两个单独的结果变量。
我正在使用php
和mysqli
可以这样做
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
可以这样做
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
结果)将在开始时显示-我想这是未指定的, 因此是请求或接受的结果。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.