我有一个机场表,每行包含以下字段:国际航空运输协会,城市,国家。。。如何搜索所有这些字段,但首先返回完全匹配的结果?例如,如果我键入alb,我想看到的第一个结果是alb,奥尔巴尼,美国,然后所有其他比赛,而不是tia,地拉那,阿尔巴尼亚和奥尔巴尼之后?
这是我的密码:
const airports = await Airport.findAll({
attributes: [
'IATA',
'city',
'country',
],
where: {
[sequelize.Op.or]: [
{ IATA: filter.toUpperCase() },
{ city: { [sequelize.Op.like]: `%${filter}%` } },
{ country: { [sequelize.Op.like]: `%${filter}%` } },
],
status: 1,
},
});
1条答案
按热度按时间t30tvxxf1#
我用这种方法解决了一个相关的问题。我在上创建了一个专栏
order
如果与上的完全匹配,则返回1IATA
像其他人一样2
. 订购此专栏将解决您的问题。因为你的专栏可能会有所不同
literal()
,可以修改order属性,但概念是这样的。按我的目的,我得到了4分
CASE
他很聪明,工作也很好。obs:如果你的模特有
alias
在列上IATA
,在这里,您需要输入您的原始列名,因为我们构建了一个文本术语。