任务是编写一个sql查询,返回有史以来第一位就职总统。表中使用的两个属性 administration
应该不言自明。在这里你可以看到我的解决方案,我有信心是正确的。
SELECT A1.pres_name, A1.year_inaugurated
FROM administration A1
WHERE NOT EXISTS
(SELECT NULL
FROM administration A2
WHERE A1.year_inaugurated > A2.year_inaugurated);
当我试图学习sql时,我想到了任何其他方法来编写这个查询,但是找不到任何方法。有没有其他解决方案不用 NOT EXISTS
? 而是使用 IN
, NOT IN
, EXISTS
? 另一个限制是不使用 MIN
功能。如果有一种以上的解决方案 NOT EXISTS
,我很高兴看到他们从中学到最多的东西。
3条答案
按热度按时间yduiuuwa1#
你不能真的用
NOT IN
,但可以使用标量子查询编写:或者——假设没有任何重复的年份——使用
ORDER BY
以及限制行数的方法:nwwlzxa72#
另一种获得所需结果的方法是使用操作符
ALL
:siv3szwd3#
我想这差不多是戈登的第二个答案,但我不太熟悉
FETCH
在sql server中使用top
.