,如果我有列ID,姓名,分数,日期SQL查询来获取最早日期
一个表,我想运行一个SQL查询来获取记录其中id = 2与数据的最早日期组。
你可以在查询内做到这一点,或者你需要在事后循环吗?
编辑:为了明确,我想获得该记录的所有字段。 。
,如果我有列ID,姓名,分数,日期SQL查询来获取最早日期
一个表,我想运行一个SQL查询来获取记录其中id = 2与数据的最早日期组。
你可以在查询内做到这一点,或者你需要在事后循环吗?
编辑:为了明确,我想获得该记录的所有字段。 。
如果你只是想日期:
SELECT MIN(date) as EarliestDate
FROM YourTable
WHERE id = 2
如果你希望所有的信息:
SELECT TOP 1 id, name, score, date
FROM YourTable
WHERE id = 2
ORDER BY Date
防止环路时即可。循环往往导致游标,而游标几乎不是必需的,而且往往效率非常低。
SELECT TOP 1 ID, Name, Score, [Date]
FROM myTable
WHERE ID = 2
Order BY [Date]
尝试
select * from dataset
where id = 2
order by date limit 1
已经有一段时间,因为我做的SQL,所以这可能需要一些调整。
使用“限制”和“顶部”不适用于所有SQL服务器(例如使用Oracle)。 您可以在纯SQL尝试更复杂的查询:
select mt1.id, mt1."name", mt1.score, mt1."date" from mytable mt1
where mt1.id=2
and mt1."date"= (select min(mt2."date") from mytable mt2 where mt2.id=2)
如果有最低日期相同的行,则可以返回多行。 – 2017-08-22 13:05:45
在使用TOP或一个子查询都工作,我将问题分解成以下步骤:
查找目标记录
SELECT MIN(date) AS date, id
FROM myTable
WHERE id = 2
GROUP BY id
加入拿到其他领域
SELECT mt.id, mt.name, mt.score, mt.date
FROM myTable mt
INNER JOIN
(
SELECT MIN(date) AS date, id
FROM myTable
WHERE id = 2
GROUP BY id
) x ON x.date = mt.date AND x.id = mt.id
虽然这种解决方案,使用衍生的表,是较长的,它是:
这是比较容易,测试为一体的部件查询可以独立运行。
它是自我记录,因为查询直接反映了要求 即,派生表列出了id = 2的行的最早日期。
它是可扩展的,就好像另一个条件是必需的,这可以很容易地添加到派生表。
如果我想获取该记录的名称,该怎么办 – leora 2010-03-06 18:34:30