我不得不复习一些代码,并且遇到了某人做了某事,并且想不出我的方式更好的原因。它可能不是,那么,哪个更好/更安全/更有效?MAX vs Top 1 - 哪个更好?
SELECT MAX(a_date) FROM a_table WHERE a_primary_key = 5 GROUP BY event_id
OR
SELECT TOP 1 a_date FROM a_table WHERE a_primary_key = 5 ORDER BY a_date
我会去与第二个选项,但我不知道为什么,如果这是正确的。
SQL Server TOP 1的行为与使用rowNum = 1的Oracle不同。 Oracle实际上并没有抢在订购之前找到的第一个,所以这个方法仅对SQL Server有效。这个TOP 1 vs Max()的另一个好处是,只要你包含适用的顺序,你可以根据需要抓取尽可能多的列。我使用Max()进行了测试,发现即使使用GROUP BY,它也不会只产生1条记录。也许有人更强大的mojo可以说,如果你想从多列无w/o子查询获得顶部如何获得一行? – gordon