- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
用户表
编号
user_comments 表
编号 |用户 ID |内容 |创建于
我有一个用户 ID 列表,我想为每个用户 ID 抓取最新的 3 条评论。
SELECT * FROM user_comments WHERE user_id IN (1, 2, 3, 4, 5)
ORDER BY created_at DESC
LIMIT 3;
这将从所有匹配的ID中获取最后3条评论,我想要每个 ID的最后3条评论。首选 1 个不带联合的查询。
我试过自己正确加入表格,但我似乎无法正确加入。
** 编辑:我不能依赖 id 列进行排序,它必须使用日期列。
谢谢。
** 我的最终解决方案
SELECT user_comments.* FROM user_comments
LEFT OUTER JOIN user_comments user_comments_2
ON user_comments.post_id = user_comments_2.post_id
AND user_comments.id < user_comments_2.id
where user_comments.post_id in (x,x,x)
GROUP BY user_comments.id
HAVING COUNT(*) < 3
ORDER BY user_id, created_at
@PaulSpiegel 提出的答案确实对我有用(有警告),但是我最终采用了我使用此线程中的信息制作的上述连接解决方案:link
Bill Karwin 提到。
谢谢大家!
最佳答案
如果你可以使用id
而不是created_at
,你可以将id
与第三高的id
进行比较每个用户。您可以在带有 LIMIT 1 OFFSET 2
的子查询中找到它。对于用户少于 3 条评论的情况,使用 COALESCE(或 IFNULL)选择所有 id >= 0
的评论。
SELECT *
FROM user_comments c
WHERE user_id IN (1, 2, 3, 4, 5)
AND id >= COALESCE((
SELECT id
FROM user_comments c1
WHERE c1.user_id = c.user_id
ORDER BY id DESC
LIMIT 1
OFFSET 2
), 0)
ORDER BY user_id, id DESC
如果您不能使用 id
进行订购..
SELECT *
FROM user_comments c
WHERE user_id IN (1, 2, 3, 4, 5)
AND created_at >= COALESCE((
SELECT created_at
FROM user_comments c1
WHERE c1.user_id = c.user_id
ORDER BY created_at DESC
LIMIT 1
OFFSET 2
), '1970-01-01 00:00:00')
ORDER BY user_id, created_at DESC
请注意,如果第 3 条和第 4 条评论具有相同的时间戳,那么您可能会(尽管不太可能)收到超过 3 条评论。
关于MYSQL:限制每个 whereIn() 的行数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42124031/
我正在尝试设计一个查询,但我不知道从哪里开始。 我会按照我希望的方式输入它。 Items::whereIn('id',$ids)->orWhereIn('id_2',$ids)->where(
我正在通过过滤器搜索产品: 我的代码: ->where(function($query) use($filter) { if(!empty($filter)){ foreach ($fil
我在用 Doctrine 制作一个相当简单的查询时遇到了麻烦...... 我有两个数组($countries、$cities),我需要检查数据库记录值是否与内部的任何值匹配。我正在寻找类似的东西: -
我有3张 table : 文章 标签 article_tag 它们都是具有枢轴的多对多关系。 我需要查询它以获取所有具有标签数组的文章: Article::with('tags')->whereIn(
我要构建 LINQ稍后将翻译为 WHERE IN在sql .在常规用例中,我会这样做: (querable 是 IQuerable 而 arr 是 IEnumerable ) querable = q
使用查询生成器查询数据库时,出现错误 Object of class Closure could not be converted to string // Each type
所以我正在寻找与 WHERE IN(val1,val2) 等价的方法,我已经尝试过,但没有用。 Angular 火力地堡 this.firebase.database.list('/favorites
我有一系列的收藏。在收藏中我有关系。我如何使用 whereIn在这些关系中? $arrayCollections = $category->products; $arrayCollections =
我使用 Knex 构建了一个查询,如下所示: knex('discounts') .where((builder) => { builder .where('product_c
我正在尝试以下查询以获取特定类别的所有问题。 $categories = Category::with('question')->whereIn('id', [2,3])->get(); 我的关系定义
用户表 编号 user_comments 表 编号 |用户 ID |内容 |创建于 我有一个用户 ID 列表,我想为每个用户 ID 抓取最新的 3 条评论。 SELECT * FROM user_co
我需要做以下事情 Model::select('column')->whereIn('column','!=',array)->first(); 那么我怎样才能做到这一点。任何建议谢谢。 最佳答案 您
我有两个数组 temp[] time[] 例如,如果我的数组中有这样的数据 temp time [0] 80 45 [1] 70 50 [2] 85 65 [
我试图在变量 $sections 中收集属于发生在它们身上的部分的所有记录。但只有第 1 部分的那些人才会接我。有什么建议吗? $sections = '1,2,3'; $data = News::w
在我的应用程序中,我更新了 one-to-many 的关系至many-to-many我正试图找出一种方法来保持相关的功能。 假设我有两个相关的表,例如狗和主人。如果我有一组主人,并且我正在尝试为这些主
下面是我的查询,我使用了哪一个并且工作正常。 if($t_requested['category_id']) { $t_query_condition['p.categ
我通过 ajax 在字符串中有 id, 例子: "1,2" 在我的 Controller 中,我想使用带有 id => [1,2] 的 whereIn 在一次查询中更新产品的多行。 ajax: $('
在 MySQL 中,要在“WHERE IN”子句中搜索多个列,通常这样做: where (column1, column2) in (select column1, column2 from tabl
我目前正在尝试从包含 id 和 name 列的 X 表中获取数据。我在该项目中使用 Laravel,并进入其中以从 X 表获取多个数据。它工作完美,当我发送请求数据为 (1,2,3,4) 时,我得到了
我有一个简单的查询,其中 $clubs 和 $user_ids 是数组。我想在同一查询中使用两个 WhereIn。例如 $clubs = array(1,2,3) 和 $user_id = array
我是一名优秀的程序员,十分优秀!