【问题标题】:How to get the First and Last Record of DB如何获取数据库的第一条和最后一条记录
【发布时间】:2009-07-17 14:03:17
【问题描述】:

如何从表中检索第一条和最后一条记录。

注意:我不会按顺序订购

【问题讨论】:

  • 问题毫无意义.....
  • +1 -> 我在这里可能有点争议,但我认为一旦你熟悉了一些 RDMBS 并运行了大量的 SQL 查询,你就会知道没有任何承诺行在表中排序,除非您有意对它们进行排序。但是初学者怎么知道呢?表格有第一行和最后一行是完全自然的投影。
  • 回应您的编辑:如果您想要任何类似的顺序,您必须进行排序。数据库不是按顺序存储的,并且没有固定的顺序除非由order by 指定。因此,您已经查看了一个答案,然后在面对所有证据表明如果没有order by 子句或多个子查询,您将无法做您想做的事,您就拒绝了它。这两个答案都在这里。选择您认为最适合您的需求。

标签: mysql


【解决方案1】:

问题实际上没有意义,但是,假设您正在讨论表中的第一行和最后一行,这将起作用,但最好作为两个单独的查询并假设您有一个数字 ID 列. MySQL 示例:

select * from test where id = (select max(id) from test)
union
select * from test where id = (select min(id) from test)

【讨论】:

    【解决方案2】:

    取决于你所说的“第一个”和“最后一个”是什么意思。

    您可以“ORDER BY”特定列,然后选择“LIMIT 1”,然后选择“ORDER BY ... DESC”以获得相反的结果。

    例如

    SELECT * FROM table ORDER BY col LIMIT 1
    SELECT * FROM table ORDER BY col DESC LIMIT 1
    

    ...如果您希望两者都在同一个查询中:

    SELECT * FROM table ORDER BY col LIMIT 1
    UNION
    SELECT * FROM table ORDER BY col DESC LIMIT 1
    

    【讨论】:

    • 没有理由!取决于问题是否需要。我会编辑:)
    【解决方案3】:
    SELECT TOP 1 * FROM Table ORDER BY 1
    SELECT TOP 1 * FROM Table ORDER BY 1 DESC
    

    假设您的第一列是关键

    (可以在 t-sql 中使用)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-03-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-28
      • 1970-01-01
      • 2022-12-09
      相关资源
      最近更新 更多