【问题标题】:SQL MAX() questionSQL MAX() 问题
【发布时间】:2009-06-12 15:42:21
【问题描述】:
uid     timestamp
1   1242420497
1   1243534661
1   1243534858
1   1243611312
1   1243611511
3   1244817764
3   1244819093
1   1244749446

我有这张表,我正在寻找具有最高时间戳的行。 我尝试使用

SELECT uid,max(timestamp) FROM `node_revisions` WHERE nid=51

但是返回了

uid timestamp
1   1244819093

如您所见,它的 uid 错误。我如何让它从正确的行中获取 uid?谢谢

【问题讨论】:

  • 你的条件是搜索 nid...你是不是要把 uid 放在那里?
  • 这不是 SQL MAX 问题。只需按时间戳 DESC 排序并选择第一个。请参阅下面的解决方案。
  • 应该禁止使用没有 GROUP BY 子句的聚合函数 - 并且在 T-SQL 中。
  • @David:那么 OP 必须使用 MySQL 或 SQLite,这允许不明确地使用 GROUP BY。

标签: sql max


【解决方案1】:

SELECT * FROM node_revisions WHERE nid=51 ORDER BY timestamp DESC LIMIT 1

【讨论】:

    【解决方案2】:

    您缺少 GROUP BY 子句。

    SELECT
        uid,
        max(timestamp) as max_time
    FROM
        node_revisions
    WHERE
        nid = 51
    GROUP BY
        uid
    ORDER BY 
        max_time DESC 
    LIMIT 1
    

    【讨论】:

    • @op: 你用的是什么关系型数据库?
    • @OP:您可以在 SQL 中添加“ORDER BY max_time DESC LIMIT 1”,以防止返回多个 UID。
    【解决方案3】:

    首先,nid 没有出现在您的表格中。

    第二,我怀疑你想要group by uid

    【讨论】:

      【解决方案4】:

      您的示例使用 nid=51 而不是 uid=51。此代码是直接从您正在运行的代码中复制的吗?如果有一个 nid 字段,这可能是你的问题。而且你需要一个 group by 子句。

      SELECT uid, max(timestamp) as max_time
      FROM 'node_revisions'
      WHERE uid = 51
      GROUP BY uid
      

      【讨论】:

        【解决方案5】:

        这会很好用..我确定

        select uid FROM `node_revisions`
        WHERE uid=51 and timestamp = (select max(timestamp) where uid = 51)
        group by uid
        

        【讨论】:

          【解决方案6】:
          SELECT uid, timestamp 
          FROM node_revisions 
          WHERE timestamp = (SELECT MAX(timestamp) FROM node_revisions);
          

          更新根据 Ryan Oberoi 的评论;因为我们只得到一条记录,所以外部查询中的 MAX() 是不必要的。谢谢。

          【讨论】:

          • 谢谢,这似乎有效。我刚刚添加了 NID 字段以满足我的需求,但它完成了工作
          • 第一次选择不需要MAX...使用更简单 ORDER BY timestamp DESC...
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-07-08
          • 2015-06-18
          • 1970-01-01
          • 2018-11-08
          相关资源
          最近更新 更多