mysql 多字段 OR 查询如何排序?

发布于 2022-09-07 15:52:09 字数 401 浏览 11 评论 0

现有表user

数据结构
id name sex age
1 B 2 20
2 A 2 25
3 B 1 20
4 A 1 30

select * from user where name = 'A' or sex = '1' 可查出数据

2 A 2 25
3 B 1 20
4 A 1 30

从上数据来看 id 为 4的数据匹配度最高 ,怎样排序能使匹配度最高(多字段)的数据靠前.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

初心未许 2022-09-14 15:52:09

其实这个问题可以看成是数学上集合的的问题
你的这个sql:

select * from user where name = 'A' or sex = '1' 

可以等价成下面这个sql

select * from user where name = 'A' AND sex = 1 
UNION ALL
SELECT * FROM user WHERE name = 'A' AND sex != 1
UNION ALL
SELECT * FROM user WHERE name != 'A' AND sex = 1

拆解成三部分,可以自由调整显示顺序
谢谢。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文