多个查询条件 有一个条件匹配就查出 排序按照条件匹配最多的顺序排 要怎么实现

2020-04-15 23:55:05 +08:00
 Renco

比如有一张资料表 字段信息如下

|----品牌----|

|----型号----|

|----名字----|

|----规格----|

|----大小----|

|----资料内容----|

然后品牌、型号、名字、规格、大小是搜索条件,5 个条件全输入 只要符合一个条件就可以查询出来,然后按照匹配查询条件越多的,排序往前

比如查询

查询结果的排序顺序为

这种的 SQL 怎么实现。。我第一反应是写多条查询语句 从 5 条查到 4 条查到 3 条查到一条往下这种方式加到 list 里返回

1708 次点击
所在节点    Java
4 条回复
lululau
2020-04-15 23:59:37 +08:00
es 吧,sql 的话不能排序,排序放在内存做
reus
2020-04-16 09:31:57 +08:00
bool 转成 int,然后取结果大于等于 1 的,排序就是按大小排。
Habyss
2020-04-16 11:33:28 +08:00
@reus 点个赞
gdev
2020-06-05 10:55:43 +08:00
SELECT * FROM 资料表 AS t1
LEFT JOIN(
SELECT id,IF(`品牌` = '品牌 A',1,0) c1,IF(`型号` = '型号 A',1,0) c2,IF(`名字` = '名字 A',1,0) c3,IF(`规格` = '规格 A',1,0) c4 FROM 资料表
) AS orderTable
ON t1.id = orderTable.id
ORDER BY (c1+c2+c3+c4) DESC

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/662885

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX