select max(DELIVERY_TIMESTAMP) from DOCUMENTS;
将返回最新文档的发送时间。如何返回其他列以获取最新文档?例如,我想DOC_NAME
为最近交付的文档?我不确定如何形成WHERE
子句。SQL搜索MAX()
回答
您有几种选择
SELECT DOC_NAME
FROM DOCUMENTS
WHERE DELIVERY_TIMESTAMP IN (
SELECT MAX(DELIVERY_TIMESTAMP)
FROM DOCUMENTS
)
或用加入
SELECT DOC_NAME
FROM DOCUMENTS
INNER JOIN (
SELECT MAX(DELIVERY_TIMESTAMP) AS MAX_DELIVERY_TIMESTAMP
FROM DOCUMENTS
) AS M
ON M.MAX_DELIVERY_TIMESTAMP = DOCUMENTS.DELIVERY_TIMESTAMP
是否有一个时间戳副本,或者您需要在您的“MAX”多列问题就变得更复杂标准(因为MAX()
仅在所有行的一列上)
这就是JOIN
选项是唯一的选择,因为这样的结构不可用(说具有相同的时间戳多个订单):
SELECT DOC_NAME
FROM DOCUMENTS
WHERE (DELIVERY_TIMESTAMP, ORDERID) IN (
SELECT TOP 1 DELIVERY_TIMESTAMP, ORDERID
FROM DOCUMENTS
ORDER BY DELIVERY_TIMESTAMP DESC, ORDERID DESC
)
在那里你其实需要做的:
SELECT DOC_NAME
FROM DOCUMENTS
INNER JOIN (
SELECT TOP 1 DELIVERY_TIMESTAMP, ORDERID
FROM DOCUMENTS
ORDER BY DELIVERY_TIMESTAMP DESC, ORDERID DESC
) AS M
ON M.DELIVERY_TIMESTAMP = DOCUMENTS.DELIVERY_TIMESTAMP
AND M.ORDERID = DOCUMENTS.ORDERID
Select Max(DELIVERY_TIMESTAMP),
Doc_Name
From TableName
Group By Doc_Name
这应该这样做,除非我错过了一些问题。
我不知道任何SQL变体,这是保证工作,至少在Oracle上它肯定不会。 – Alnitak 2008-10-31 16:20:16
只有当您订购BY MAX(DELIVERY_TIMESTAMP)并取得TOP 1时,此功能才有效。 – 2008-10-31 16:32:30
SELECT
DELIVERY_TIMESTAMP,
OTHER_COLUMN
FROM
DOCUMENTS
WHERE
DELIVERY_TIMESTAMP = (SELECT MAX(DELIVERY_TIMESTAMP) FROM DOCUMENTS)
这比我的更好,我为您投票。 – 2008-10-31 15:54:51
在MSSQL中,下面的工作太:
SELECT TOP 1 * FROM DOCUMENTS ORDER BY DELIVERY_TIMESTAMP DESC
在SQL的某些版本(即MySQL)你可以这样做:
SELECT *
FROM DOCUMENTS
ORDER BY DELIVERY_TIMESTAMP DESC
LIMIT 1
- 1. 在MATLAB中搜索max-min
- 2. 如何在sql ce中使用max(id)作为搜索条件?
- 3. SQL索引搜索
- 4. SQL索引搜索
- 5. PHP/SQL搜索
- 6. SQL搜索栏
- 7. woocommerce搜索sql
- 8. 搜索SQL
- 9. SQL搜索查询应先在搜索
- 10. SQL执行搜索/替换搜索
- 11. SQL,搜索true,false或同时搜索
- 12. SQL搜索查询
- 13. 火花SQL搜索
- 14. 全文搜索SQL
- 15. 搜索long varchar SQL
- 16. SQL不能搜索
- 17. 搜索与SQL Server
- 18. SQL搜索复制
- 19. SQL搜索配置
- 20. SQL全文搜索
- 21. SQL 2005 XML搜索
- 22. SQL词库搜索
- 23. 搜索SQL函数
- 24. 模糊搜索SQL
- 25. 简化SQL搜索
- 26. 搜索使用SQL
- 27. SQL搜索引擎
- 28. SQL波斯搜索
- 29. Sql进阶搜索
- 30. MAX(DATE) - SQL ORACLE
凯德,我打算回复JOIN解决方案,然后检查每项技术的执行计划。 Sql Server 2005(我有用的db)为每种语法使用相同的执行计划。 So Paul,你有你的选择......性能不会受损 – 2008-10-31 15:58:53