gpt4 book ai didi

mysql - serchkick 找到正确结果后如何重新排序结果?

转载 作者:可可西里 更新时间:2023-11-01 08:24:22 26 4
gpt4 key购买 nike

当我在 Rails 控制台中这样做时:posts = Post.active.search('lorem').records 它给了我这个:Post Load (0.9ms) SELECT `posts` .* FROM `posts` WHERE `posts`.`id` IN (3, 1, 2) LIMIT 11 但是当我执行 posts.pluck(:id) 时,结果是: [1、2、3]。所以,如您所见,顺序不一样,因为它在查询中,它应该是 [3, 1, 2]。如何重新排序结果,使其成为 [3, 1, 2]?谢谢。

最佳答案

这是一个原始的 MySQL 查询,它将生成您期望的输出:

SELECT *
FROM posts
WHERE
id IN (3, 1, 2)
ORDER BY
FIELD(id, 3, 1, 2)
LIMIT 11

我对 ActiveRecord 知之甚少,但我希望您需要对上述 ORDER BY 子句使用原始 SQL,并且可能对整个查询使用原始 SQL。这里的一个选择是运行整个原始查询:

sql = "SELECT * FROM posts ... ORDER BY FIELD(id, 3, 1, 2) LIMIT 11"
records_array = ActiveRecord::Base.connection.execute(sql)

关于mysql - serchkick 找到正确结果后如何重新排序结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46948664/

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