比如有一张资料表 字段信息如下
|----品牌----|
|----型号----|
|----名字----|
|----规格----|
|----大小----|
|----资料内容----|
然后品牌、型号、名字、规格、大小是搜索条件,5 个条件全输入 只要符合一个条件就可以查询出来,然后按照匹配查询条件越多的,排序往前
比如查询
查询结果的排序顺序为
这种的 SQL 怎么实现。。我第一反应是写多条查询语句 从 5 条查到 4 条查到 3 条查到一条往下这种方式加到 list 里返回
1
lululau 2020-04-15 23:59:37 +08:00 via iPhone
es 吧,sql 的话不能排序,排序放在内存做
|
2
reus 2020-04-16 09:31:57 +08:00 via Android 4
bool 转成 int,然后取结果大于等于 1 的,排序就是按大小排。
|
4
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 |