我有2张桌子。
第一个表有列
fileID
、createdate
。
第二张表将
userid
、fileID
、createdate
作为公共字段以及其他列。
我正在尝试编写一个查询来查找最新的
fileid(max)
和第一个加载的fileid(min)
,基于特定用户ID的createdate
,方法是连接这两个表并在fileid上使用groupby,在查询中createdate并过滤用户where 子句中的 id。
但是结果显示了所有行。
我需要一个关于如何编写查询的建议,以便仅从这两个表中获取 2 条记录(最大和最小 fileid 记录),而不是所有具有这些字段更改的记录。
我正在使用 SQL Server 来编写查询。
感谢您的帮助。
要按最早或最晚的
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