mysql - 如何为列设置优先级并按该优先级对结果进行排序?

标签 mysql sorting full-text-search sql-order-by

我有一个这样的表:

// mytable
+----+---------+-------------------------------+
| id |   title |           content             |
+----+---------+-------------------------------+
| 1  |  hello  |  how are you?                 |
| 2  |  you    |  it is  content2              |
| 3  |  what   |  hello is a word for greating |
| 4  |  mouse  |  it is content4               |
+----+---------+-------------------------------+

嗯,我想给 title 一个比 content 更高的优先级。我的意思是,我想显示 title 列(第一个)的所有结果,然后显示 content 列(第二个)的所有结果。这也是我的查询:

select * from mytable where match(title, content) against($word);

这里还有两个例子:

示例 1:

$word = 'you';

我想要这样的输出:(关注排序)

+----+---------+-------------------------------+
| id |   title |           content             |
+----+---------+-------------------------------+
| 2  |  you    |  it is  content2              |
| 1  |  hello  |  how are you?                 |
+----+---------+-------------------------------+

示例 2:

$word = 'hello';

我想要这样的输出:(关注排序)

+----+---------+-------------------------------+
| id |   title |           content             |
+----+---------+-------------------------------+
| 1  |  hello  |  how are you?                 |
| 3  |  what   |  hello is a word for greating |
+----+---------+-------------------------------+

我再次强调,我想要所有来自 title 列的结果,然后所有来自 content 列的结果。有什么解决办法吗?

最佳答案

您需要做的就是使用 CASE 和单词匹配项进行条件排序。这是一个让你继续前进的例子

SELECT title, content
FROM tablename
ORDER BY CASE
    WHEN title LIKE '%you%' THEN 1
    WHEN content LIKE '%you%' THEN 2
    ELSE 3
END;

FIDDLE EXAMPLE

关于mysql - 如何为列设置优先级并按该优先级对结果进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33157471/

相关文章:

mysql - 在 64 位系统中,32 位列占用的空间比 64 位列少?

mysql 统计地理查询

mysql - 20K 读取是否会使插入到我的表中变慢?外键失败怎么办?

php - 使用 PHP 将用户输入的全文搜索查询解析为 MySQL 的 WHERE 子句

Postgresql 自定义函数速度慢,php 但如果使用带有 gin 索引的文本搜索直接在 psql 上输入则速度很快

Mysql - 有效地获取给定ID的每个组的最大值

javascript - jqGrid Sort - 浏览器因更大的数据而挂起

ios - 如何根据键对数组进行排序?

c - 希尔排序程序

ruby-on-rails - 使用 Rails Solr 搜索子字符串