【问题标题】:Getting DISTINCT ids in MySQL在 MySQL 中获取 DISTINCT id
【发布时间】:2012-01-03 15:11:43
【问题描述】:

我有一个这样的表结构:

Comments table
id      review_id    user_id  created     comments deleted
1       10           28       2011-10-12  "hi"     0
2       11           28       2011-10-13  "yo"     0
3       10           28       2011-10-15  "bye"    0

我想从按创建的 DESC 排序的每条评论中获取最新评论。所以我有这样的事情:

SELECT DISTINCT review_id, 'comments' as type FROM comments as MyTable WHERE 
user_id=28 AND deleted=0 ORDER BY created DESC LIMIT 30

所以在上表中,我希望返回 id = 3 然后 id = 2 的行。

【问题讨论】:

    标签: mysql sql group-by distinct greatest-n-per-group


    【解决方案1】:

    请将此代码集成到您的代码中。

    表格数据:

    id      review_id    user_id  created     comments deleted
    1       10           28       2011-10-12  "hi"     0
    2       11           28       2011-10-13  "yo"     0
    3       10           28       2011-10-15  "bye"    0
    

    运行查询:

    SELECT DISTINCT id, review_id, 'comments' AS TYPE 
    FROM mytable
    WHERE user_id = 28
    AND deleted = 0
    AND id = (
      SELECT max( id )
      FROM mytable 
    )
    

    结果:

    id  review_id    TYPE
    3   10       comments
    

    【讨论】:

      【解决方案2】:

      示例查询:

      https://data.stackexchange.com/stackoverflow/s/2143/getting-distinct-ids-in-mysql

      SELECT id,comment
      FROM comments
      WHERE id IN (
          SELECT MAX(id)
          FROM comments
          WHERE user_id=28 AND deleted=0
          GROUP BY review_id )
      ORDER BY created DESC
      

      【讨论】:

      • 如何在其他列中添加
      • 能否给出完整的表结构
      • 让我们说一个我想返回的评论字段
      • 添加了完整的结构,我想获取按 review_id 分组的所有列的最新行
      • 内查询选择最大id,外查询选择cmets
      猜你喜欢
      • 1970-01-01
      • 2015-01-28
      • 2022-10-24
      • 2012-10-13
      • 1970-01-01
      • 2019-08-03
      • 1970-01-01
      • 1970-01-01
      • 2011-12-21
      相关资源
      最近更新 更多