【问题标题】:How to find 11th entry in SQL Access database table?如何在 SQL Access 数据库表中找到第 11 个条目?
【发布时间】:2017-07-03 17:38:48
【问题描述】:

如何在 Access SQL 数据库表中找到第 11 个条目?我必须使用 TOP 函数,我的查询目前看起来像这样:

SELECT TOP 11 Passenger.Name, SUM(Manifest.Ticketprice) AS [Total Amount Spent on Tickets]
FROM Passenger INNER JOIN Manifest ON Passenger.PassengerNumber=Manifest.PassengerNumber
GROUP BY Passenger.Name
ORDER BY SUM(Manifest.Ticketprice) DESC;

【问题讨论】:

    标签: sql ms-access


    【解决方案1】:

    您可以使用子查询:

    SELECT TOP 1 T.Name, T.[Total Amount Spent on Tickets]
    FROM
    
    (SELECT TOP 11 Passenger.Name, SUM(Manifest.Ticketprice) AS [Total Amount Spent on Tickets]
    FROM Passenger INNER JOIN Manifest ON Passenger.PassengerNumber=Manifest.PassengerNumber
    GROUP BY Passenger.Name
    ORDER BY SUM(Manifest.Ticketprice) DESC) As T
    
    ORDER BY T.[Total Amount Spent on Tickets] ASC
    

    【讨论】:

    • 这给了我数据库中列出的第一个人,而不是第 11 个
    • 是的,我觉得外面的ORDER BY应该是ASC
    • @Andre:应该。已更正。谢谢。
    【解决方案2】:
    SELECT TOP 11 Passenger.Name, SUM(Manifest.Ticketprice) AS [Total Amount Spent on Tickets]
    FROM Passenger INNER JOIN Manifest ON Passenger.PassengerNumber=Manifest.PassengerNumber
    GROUP BY Passenger.Name
    ORDER BY SUM(Manifest.Ticketprice) DESC LIMIT 1;
    

    【讨论】:

    • 访问中没有“LIMIT”关键字。我相信答案是使用嵌套的“TOP”查询:SELECT TOP 1 * FROM (SELECT TOP 11 Passenger.Name, SUM(Manifest.Ticketprice) AS [Total Amount Spent on Tickets] FROM Passenger INNER JOIN Manifest ON Passenger.PassengerNumber =Manifest.PassengerNumber GROUP BY Passenger.Name ORDER BY SUM(Manifest.Ticketprice) DESC);
    猜你喜欢
    • 2010-09-30
    • 1970-01-01
    • 2019-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多