Mysql获得在多列上具有更多匹配的结果

时间:2017-11-22 17:02:16

标签: mysql sql

我有一张这样的表:

vehicle   colour    animal    softdrink    
car       red       snake     cola
jeep      blue      dog       pepsi

现在我将传递查询这些参数:

jeep   blue   snake  pepsi

如何按照与参数有多少列的顺序创建一个返回行的查询?

在此示例中,第二行必须返回到第一行,因为3列是相同的

1 个答案:

答案 0 :(得分:2)

假设参数适用于每一列,您可以这样做:

select t.*
from t
order by ( (vehicle = @vehicle) +
           (colour = @colour) +
           (animal = @animal) +
           (softdrink = @softdrink)
         ) desc;

这使用方便的MySQL简写,其中布尔值在数字上下文中被视为数字。在其他数据库中,您需要使用显式case表达式。