我想要做这个更新,但由于某种原因,我不能完全掌握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