SQL order by total of value by rows

Posted

技术标签:

【中文标题】SQL order by total of value by rows【英文标题】:SQL order by total of number of value by rows 【发布时间】:2021-08-06 17:58:29 【问题描述】:

有没有办法返回行中包含值的列的总和,以将其用于 order by 示例:

id  | title         | body_text_1           | body_text_2           | body_text_3           |
---------------------------------------------------------------------------------------------
1   |  History      | book of History       | movies                | Image                 |
2   |  Sport        | history               | book                  | Audio                 |
3   |  Cinema       | History               | History               | History               |
4   |  History      | classic               | History               | Audio                 |

如果我搜索单词 历史,我正在使用 LIKE %value% 结果显示 id 3 为第一个,因为它在 3 列中有历史记录

第二个将是 1 和 4,因为它在 2 列中有历史记录

最后一个将是 2,因为它只在一列中有历史记录

结果:

3
1
4
2

【问题讨论】:

【参考方案1】:

您可以在order by 中添加布尔值:

order by (title = 'History') + (body_text_1 = 'History') +  (body_text_2 = 'History') + (body_text_34 = 'History') desc   

【讨论】:

返回相同的结果是因为我使用的是 %value% @im-learning 。 . .你可以使用任何合适的表达方式。这解决了您最初提出的问题。

以上是关于SQL order by total of value by rows的主要内容,如果未能解决你的问题,请参考以下文章

是否可以将 SUM() ORDER BY 的结果放入原始表中?

SQL注入 order by后的注入(Less-46)

SQL中,group by 跟order by有什么区别?

对order by的理解

MySQL [Err] 1055 - Expression #1 of ORDER BY clause is not in GROUP BY clause

php order by rand()问题