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

新手上路,请多包涵

现有表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的数据匹配度最高 ,怎样排序能使匹配度最高(多字段)的数据靠前.

阅读 2.5k
1 个回答

其实这个问题可以看成是数学上集合的的问题
你的这个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

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

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题