来自 2 个表的最大和最小记录

问题描述 投票:0回答:1

我有2张桌子。

第一个表有列

fileID
createdate

第二张表将

userid
fileID
createdate
作为公共字段以及其他列。

我正在尝试编写一个查询来查找最新的

fileid(max)
和第一个加载的
fileid(min)
,基于特定用户ID的
createdate
,方法是连接这两个表并在fileid上使用groupby,在查询中createdate并过滤用户where 子句中的 id。

但是结果显示了所有行。

我需要一个关于如何编写查询的建议,以便仅从这两个表中获取 2 条记录(最大和最小 fileid 记录),而不是所有具有这些字段更改的记录。

我正在使用 SQL Server 来编写查询。

感谢您的帮助。

sql max min record
1个回答
0
投票

要按最早或最晚的

fieldid
选择
createdate
并将其放在两个单独的行中,您可以尝试如下操作:

SELECT fileid, "earliest" as type
FROM table1
WHERE createdate = (SELECT MIN(createdate) from table1)
LIMIT 1
UNION ALL
SELECT fileid, "lattest" as type
FROM table1
WHERE createdate = (SELECT MAX(createdate) from table1)
LIMIT 1

不清楚为什么要将其与第二个表连接,但你可以这样做:

SELECT
 * 
FROM
  (
    SELECT fileid, "earliest" as type FROM table1 WHERE createdate = (SELECT 
    MIN(createdate) from table1) LIMIT 1
    UNION ALL
    SELECT fileid, "lattest" as type FROM table1 WHERE createdate = (SELECT 
    MAX(createdate) from table1) LIMIT 1
  ) as subquery1
LEFT JOIN
  table2 on table2.fileid = createdate.fileid
© www.soinside.com 2019 - 2024. All rights reserved.