# I'-6ren">
gpt4 book ai didi

sql - 基于传递给 IN 的 IDS 排序的排序结果

转载 作者:行者123 更新时间:2023-11-29 14:22:51 26 4
gpt4 key购买 nike

给定

ids = [4, 2, 1, 3]
dishes = Dish.where("restaurant_id in (?)", ids)

是否可以根据 id 的顺序对菜肴进行排序?

=> # I'd like to see something like this
=> dishes.map(&:restaurant_id)
=> [4, 4, 4, 4, 4, 2, 2, 2, 1, 1, 1, 1, 3, 3, 3, 3] etc.

I'm currently getting something like this
=> [1, 4, 3, 4, 4, 3, 3, 2, 3, 2, 4, 4, 4, 3, 4, 2, 2, 2, 2, 4, 3, 1, 1, 1, 3, 2, 2, 1, 4]

我知道我可以循环遍历 id,然后只是 select匹配给定 id 的菜肴然后重建数组,但我不能这样做,因为我仍然想使用 will_paginate关于协会。

如有任何帮助或提示,我们将不胜感激,谢谢!

最佳答案

我在这里能想到的唯一有效(我的意思是“将其推送到数据库”)的事情是通过遍历餐厅 ID 数组生成文本来为数据库构建自定义 order by 子句,例如:

order by
case restaurant_id
when 4 then 1
when 2 then 2
when 1 then 3
when 3 then 4
end

希望该模式足以让您推断出构建此类字符串的逻辑。

activerecord 调用应该类似于:

dishes = Dish.where("restaurant_id in (?)", ids).
order("case restaurant_id when 4 then 1 when 2 then 2 when 1 then 3 when 3 then 4 end")

关于sql - 基于传递给 IN 的 IDS 排序的排序结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16817726/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com