Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql Sql-按满足的条件数排序_Mysql_Sql - Fatal编程技术网

Mysql Sql-按满足的条件数排序

Mysql Sql-按满足的条件数排序,mysql,sql,Mysql,Sql,假设我有一个具有多个条件的查询,这些条件在OR关系中,如下所示: SELECT * FROM TABLE WHERE (c1) OR (c2) OR (c3) OR ... ( CASE WHEN c1 THEN 1 ELSE 0 END + CASE WHEN c2 THEN 1 ELSE 0 END + CASE WHEN c3 THEN 1 ELSE 0 END) 我不希望根据结果满足的条件数对结果进行排序。这意味着满足c1和c2以及c3的记录首先显示(3个条件),然后是满足c1和c2

假设我有一个具有多个条件的查询,这些条件在OR关系中,如下所示:

SELECT * FROM TABLE WHERE (c1) OR (c2) OR (c3) OR ...
( CASE WHEN c1 THEN 1 ELSE 0 END
+ CASE WHEN c2 THEN 1 ELSE 0 END
+ CASE WHEN c3 THEN 1 ELSE 0 END)

我不希望根据结果满足的条件数对结果进行排序。这意味着满足c1和c2以及c3的记录首先显示(3个条件),然后是满足c1和c2、或c1和c3、或c2和c3的记录(2个条件),最后是满足c1或c2或c3的记录,其表达式如下所示:

SELECT * FROM TABLE WHERE (c1) OR (c2) OR (c3) OR ...
( CASE WHEN c1 THEN 1 ELSE 0 END
+ CASE WHEN c2 THEN 1 ELSE 0 END
+ CASE WHEN c3 THEN 1 ELSE 0 END)

它将为您提供当前记录满足的条件数。

您是否可以使用Union来实现此目的?选择每个带有1个条件的记录,并在?或(c1)+(c2)+(c3)之后合并它。那么在完整查询中如何使用它呢?@FrankyBoy就像SQL
Select中的任何其他条件一样。。。从…起哪里按顺序订购(c1时的情况下…否则0结束)说明
正确,谢谢。。。我猜是脑屁:D。。。事实上,我现在把它添加为一个列(这样我可以在响应中得到一个“权重”,然后我可以进一步处理它)。