如何根据列中的搜索设置 MySQL 中的排序优先级?
How to set priority on order by in MySQL based on search in columns?
我正在做简单的 MySQL 查询,例如:
SELECT * FROM `table` WHERE col1 LIKE = '%text%' OR col2 LIKE = '%text%'
我需要做的是首先对在 col1 中找到搜索文本的所有结果进行排序,然后我需要对在 col2 中找到搜索文本的结果进行排序。
您可以使用 UNION,分别得到 Select 个结果,然后将它们合并。此外,Union
将确保删除重复项(同时符合两个条件的行)。如果您还想要重复项,请使用 UNION ALL
.
检查以下内容:
SELECT *
FROM `table`
WHERE col1 LIKE = '%text%'
UNION
SELECT *
FROM `table`
WHERE col2 LIKE = '%text%'
如果不确定正确的顺序,您可以合并(对于不同的结果)并为顺序添加一个显式列
select col1, col2, col3, .... , coln
from (
SELECT col1, col2, col3, .... , coln , 1 my_order
FROM `table`
WHERE col1 LIKE = '%text%'
UNION
SELECT col1, col2, col3, .... , coln , 2
FROM `table`
WHERE col2 LIKE = '%text%'
) t
order by my_order
或对所有重复值合并
select col1, col2, col3, .... , coln
from (
SELECT col1, col2, col3, .... , coln , 1 my_order
FROM `table`
WHERE col1 LIKE = '%text%'
UNION ALL
SELECT col1, col2, col3, .... , coln , 2
FROM `table`
WHERE col2 LIKE = '%text%'
) t
order by my_order
在数字上下文中,布尔值被视为整数,其中 0
为 false
且 1
为真,因此您可以按这些术语排序:
SELECT *
FROM `table`
WHERE col1 LIKE '%text%' OR col2 LIKE '%text%'
ORDER BY col1 LIKE '%text%' DESC
我正在做简单的 MySQL 查询,例如:
SELECT * FROM `table` WHERE col1 LIKE = '%text%' OR col2 LIKE = '%text%'
我需要做的是首先对在 col1 中找到搜索文本的所有结果进行排序,然后我需要对在 col2 中找到搜索文本的结果进行排序。
您可以使用 UNION,分别得到 Select 个结果,然后将它们合并。此外,Union
将确保删除重复项(同时符合两个条件的行)。如果您还想要重复项,请使用 UNION ALL
.
检查以下内容:
SELECT *
FROM `table`
WHERE col1 LIKE = '%text%'
UNION
SELECT *
FROM `table`
WHERE col2 LIKE = '%text%'
如果不确定正确的顺序,您可以合并(对于不同的结果)并为顺序添加一个显式列
select col1, col2, col3, .... , coln
from (
SELECT col1, col2, col3, .... , coln , 1 my_order
FROM `table`
WHERE col1 LIKE = '%text%'
UNION
SELECT col1, col2, col3, .... , coln , 2
FROM `table`
WHERE col2 LIKE = '%text%'
) t
order by my_order
或对所有重复值合并
select col1, col2, col3, .... , coln
from (
SELECT col1, col2, col3, .... , coln , 1 my_order
FROM `table`
WHERE col1 LIKE = '%text%'
UNION ALL
SELECT col1, col2, col3, .... , coln , 2
FROM `table`
WHERE col2 LIKE = '%text%'
) t
order by my_order
在数字上下文中,布尔值被视为整数,其中 0
为 false
且 1
为真,因此您可以按这些术语排序:
SELECT *
FROM `table`
WHERE col1 LIKE '%text%' OR col2 LIKE '%text%'
ORDER BY col1 LIKE '%text%' DESC