gpt4 book ai didi

mysql - 如何给 "push ahead"记录一个给定的值?

转载 作者:太空宇宙 更新时间:2023-11-03 18:24:00 26 4
gpt4 key购买 nike

我正在使用 Ruby on Rails 3.2.9 和 MySQL。我有一个带有 user_id 属性的 Article 模型(此属性表示外键 - id - 对于关联的作者用户),我想检索为给定作者“排序”的文章。也就是说,假设我有以下记录:

<#Article id: 1, title: "Title 1", user_id: 1>
<#Article id: 2, title: "Title 2", user_id: 2>
<#Article id: 3, title: "Title 3", user_id: 1>
<#Article id: 4, title: "Title 4", user_id: 3>
<#Article id: 5, title: "Title 5", user_id: 1>
...
<#Article id: N, title: "Title N", user_id: M>

当我查找为 id 1 (user_id = 1) 作者“订购”的文章时,返回的文章应该被订购如下所示:

<#Article id: 1, title: "Title 1", user_id: 1>
<#Article id: 3, title: "Title 3", user_id: 1>
<#Article id: 5, title: "Title 5", user_id: 1>
<#Article id: 2, title: "Title 2", user_id: 2>
<#Article id: 4, title: "Title 4", user_id: 3>
...
<#Article id: N, title: "Title N", user_id: M>

换句话说,我正在寻找检索所有 文章,但使这些文章按此“优先级”排序:由给定作者创建的文章首先返回,然后然后是所有其他文章(也就是说,我想“推进”给定作者创建的文章)。

我该怎么做?


注意:我正在寻找 Ruby on Rails 实现,也许通过 order方法。

最佳答案

您的示例不是那么清楚,因为您正在搜索 user_id 1 并且 user_id 的正常排序无论如何都会将它们放在第一位。我相信你的意思是做这样的事情:

SELECT id, title, user_id
FROM myTable
ORDER BY CASE WHEN user_id = @search_id THEN 1 ELSE 2 END, user_id

在你上面的例子中,@search_id 应该是 1。

关于mysql - 如何给 "push ahead"记录一个给定的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13800333/

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