SQL ROW_NUMBER 与 INNER JOIN

标签 sql sql-server row-number

我需要在以下查询中使用 ROW_NUMBER() 来返回结果的第 5 到 10 行。谁能告诉我我需要做什么?我一直在努力无济于事。如果有人可以提供帮助,我将不胜感激。

SELECT * 
FROM   villa_data 
       INNER JOIN villa_prices 
         ON villa_prices.starRating = villa_data.starRating 
WHERE  villa_data.capacity >= 3 
       AND villa_data.bedrooms >= 1 
       AND villa_prices.period = 'lowSeason' 
ORDER  BY villa_prices.price, 
          villa_data.bedrooms, 
          villa_data.capacity 

最佳答案

您需要将其粘贴在表表达式中以过滤 ROW_NUMBER .您将无法使用 *因为它会提示列名 starRating出现不止一次,因此需要明确列出所需的列。无论如何,这是更好的做法。

WITH CTE AS
(
SELECT /*TODO: List column names*/
       ROW_NUMBER() 
          OVER (ORDER BY villa_prices.price, 
                         villa_data.bedrooms, 
                         villa_data.capacity) AS RN
FROM   villa_data 
       INNER JOIN villa_prices 
         ON villa_prices.starRating = villa_data.starRating 
WHERE  villa_data.capacity >= 3 
       AND villa_data.bedrooms >= 1 
       AND villa_prices.period = 'lowSeason' 

)
SELECT /*TODO: List column names*/
FROM CTE
WHERE RN BETWEEN 5 AND 10
ORDER BY RN

关于SQL ROW_NUMBER 与 INNER JOIN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9752361/

相关文章:

sql - 获取在所有行中具有相同值的列

sql - Oracle 数据库创建目录

sql-server - SQL Server 中的 LDF 文件是什么?

SQL Server 按最接近零的值排序

c# - 分区 c# 上的 Nhibernate 行号

google-apps-script - 查找单元格匹配值并返回行号

sql - 针对特定数据库的 MySQL 审计

mysql - SQL - 带 LIMIT 的 SUM UP 查询

sql-server - 在远程服务器中执行 xp_cmdshell

sql - MS SQL 中查询的优先级