小编seh*_*ese的帖子

SQL CASE:WHEN语句的顺序是否重要?

我使用PHP生成需要以自定义方式排序的SQL查询.我正在生成一个CASE块,其中包含许多WHEN指定数字排名的语句.WHEN包含的语句取决于我可用于查询的信息量.例如,如果我有可用的电话,我将生成三个WHEN语句:

WHEN phone = '(202) 555-5555' AND last_name = 'Smith' and first_name = 'John' THEN 1

WHEN phone = '(202) 555-5555' AND last_name = 'Smith' THEN 2

WHEN phone = '(202) 555-5555' THEN 3

所以我根据匹配的接近程度进行排名,并且我对参数的评估是相同的(电话,名字和姓氏上的匹配应该在与地址,名字和姓氏匹配的同一层上排名).但是,在为多条信息(电话,地址等)生成这些语句之后,我的WHEN陈述将全部失灵; 被THEN 1终止的条款将彼此分开,相同THEN 2,等等.我可以把它们按顺序排列,但这会让我的PHP更加冗长和丑陋.

TL; DR?

所以简短的问题是:WHEN声明中的CASE陈述顺序是否重要?SQL(我使用的是Oracle)是第一次匹配还是评估所有可能性并分配最高排名?

sql sql-order-by

4
推荐指数
1
解决办法
2039
查看次数

标签 统计

sql ×1

sql-order-by ×1