我想要做這個更新,但由於某種原因,我不能完全掌握SQL子查詢。SQL Server:最大日期上的外鍵更新標誌
我的表結構如下:
id fk date activeFlg
--- -- ------- ---------
1 1 04/10/11 0
2 1 02/05/99 0
3 2 09/10/11 0
4 3 11/28/11 0
5 3 12/25/98 0
理想我想給activeFlg設置爲1的所有與最近的日期不同外鍵。例如,在運行我的查詢ID 1,3和4後,將激活標誌設置爲1。
我想出了是最接近的一個查詢返回所有最大日期爲每個不同的FK:
SELECT MAX(date)
FROM table
GROUP BY fk
但因爲我甚至不能拿出子查詢有沒有辦法,我可以繼續:/
有人請給我一些關於此的見解。我試圖真正瞭解更多關於子查詢,所以一個解釋將不勝感激。
謝謝!
謝謝!你不僅給我答案,而且還解釋了你的邏輯。我不知道「WITH」關鍵字,但它似乎使查詢變得更加人性化! – Amartacus 2013-02-19 14:48:58
是的,WITH在SQL中是相對較新的。它可以做其他有趣的事情(遞歸),但我覺得它是開發查詢的好方法。如果你有很多的「子查詢」,它可以使測試更容易,因爲你可以查詢鏈中的任何點而不改變其餘的(只是註釋掉最後一個查詢並把它放在你想要的地方)。 – Hogan 2013-02-19 17:19:36