【问题标题】:SQL where Key = "Test" and ID = max(ID)SQL where Key = "Test" and ID = max(ID)
【发布时间】:2022-01-03 20:06:42
【问题描述】:

如何选择 ID 等于最大 ID 的键的行。由于 ID 是作为唯一主键自动生成的。

SELECT * FROM TABLE WHERE Key = "Test" AND WHERE ID = max(ID)

我试过了,但它执行但返回空白。

SELECT * FROM Table WHERE Key= "Test" AND ID=(SELECT max(ID) FROM Table);

【问题讨论】:

  • 你几乎是正确的,你忘记了内部查询条件:SELECT * FROM Table WHERE ID=(SELECT max(ID) FROM Table Where Key= "Test");
  • 如果将WHERE 子句移动到子查询中,将会得到更好的结果
  • 按key分组,在组中查找max(ID)。
  • 在我将 Where Key="Test" 添加到子查询后现在可以使用。感谢 Mani 和 HoneyBadger。
  • 有没有办法调用除 ID 列之外的每一列 (*)?

标签: sql sql-server ms-access


【解决方案1】:

您的查询在内部查询中缺少“WHERE”子句,它应该看起来像这样

SELECT * FROM [TableName] WHERE ID=(SELECT max(ID) FROM [TableName] WHERE Key= "Test");

在另一个类似的问题上提到了另一种方法

SELECT TOP 1 * FROM [TABLENAME] WHERE Key="Test" ORDER BY ID DESC

参考:similar question

【讨论】:

    【解决方案2】:

    很可能,最新的行 - 迄今为止获得最高 id 的那一行,具有 key 的值而不是“测试”。

    因此,您只能获取 key 等于“测试”的行中的行 - 具有最高 id 的行。

    因此,请尝试:

    SELECT * FROM table 
    WHERE key='Test'
      AND id=(SELECT MAX(id) FROM table WHERE key='Test')
    

    【讨论】:

      猜你喜欢
      • 2015-01-26
      • 2017-09-27
      • 2016-10-03
      • 2012-11-20
      • 1970-01-01
      • 2011-12-10
      • 2020-01-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多