【问题标题】:Sql query for distinct user id on the basis of highest column value基于最高列值的不同用户ID的Sql查询
【发布时间】:2013-06-18 13:06:58
【问题描述】:

请帮我写一个Django查询和MySql查询,我有一个像这样的表molesdetails:

+---+  +--------+  +----------+  +----------+
|id |  |user_id |  |   ref    |  |   set    |
+---+  +--------+  +----------+  +----------+
|1  |  |  1     |  |    1     |  |    1     |
|2  |  |  1     |  |    1     |  |    2     |
|3  |  |  1     |  |    2     |  |    3     |
|4  |  |  2     |  |    1     |  |    1     |
|5  |  |  2     |  |    1     |  |    2     |
|6  |  |  2     |  |    2     |  |    3     |
|7  |  |  1     |  |    2     |  |    4     |
+---+  +--------+  +----------+  +----------+

我希望我应该从集合最大的查询中获得特定用户 id 的不同 ref。就像我想要一些东西一样 user id = 1:

+---+  +--------+  +----------+  +----------+
|id |  |user_id |  |   ref    |  |   set    |
+---+  +--------+  +----------+  +----------+
|2  |  |  1     |  |    1     |  |    2     |
|7  |  |  1     |  |    2     |  |    4     |
+---+  +--------+  +----------+  +----------+

请帮助我编写 sql 查询,因为这对我来说很难实现,谢谢。

【问题讨论】:

  • 谢谢我从以下查询select max(id) as id, user_id,ref, max(set) as set from table_name where user_id = 1 group by ref;得到的结果

标签: mysql sql mysql-python


【解决方案1】:
select t1.* 
from your_table t1
inner join
(
  select ref, max(set) as mset
  from your_table
  where user_id = 1
  group by ref
) t2 on t2.mset = t1.set and t2.ref = t1.ref

【讨论】:

    【解决方案2】:

    您可以通过基本聚合完成大部分操作:

    select user_id, ref, max(set) as set
    from t
    group by user_id, ref
    

    问题是:如何获得id?这是您可以在不需要额外连接的 MySQL 中使用的方法:

    select substring_index(group_concat(id order by set desc), ',', 1) as id,
           user_id, ref, max(set) as set
    from t
    group by user_id, ref
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-12-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-15
      • 2020-10-02
      • 2021-02-17
      相关资源
      最近更新 更多