,如果我有列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