连接的 SQL 限制

标签 sql sql-server select join limit

我在获取下一个查询的第一行时遇到了问题:

Select mar.Title MarketTitle, ololo.NUMBER, ololo.Title from Markets mar
JOIN( 
    Select emp.Employee_ID, emp.Market_id, ppp.Title, ppp.NUMBER from Employees emp
    JOIN(
    select pur.Employee_id Empl,Pro.Title Title, COUNT(pur.Product_id) NUMBER from Purchase pur
    LEFT JOIN  
        Payments pay ON pay.Payment_ID = pur.Payment_ID AND pay.Date > DATEADD(month, -1, GETDATE())
    RIGHT JOIN Products pro
    ON pur.Product_id = pro.Product_ID
    GROUP BY Pro.Title, pur.Employee_id) ppp ON ppp.Empl = emp.Employee_id) ololo
ON mar.Market_ID = ololo.Market_id
ORDER BY NUMBER DESC

我尝试了很多插入“limit 1”的组合,但都出错了。谁能帮忙?

最佳答案

LIMIT 不适用于 SQL Server

使用TOP 1相反:

SELECT TOP 1 mar.Title MarketTitle, ololo.NUMBER, ololo.Title from Markets mar
JOIN( 
    Select emp.Employee_ID, emp.Market_id, ppp.Title, ppp.NUMBER from Employees emp
    JOIN(
    select pur.Employee_id Empl,Pro.Title Title, COUNT(pur.Product_id) NUMBER from Purchase pur
    LEFT JOIN  
        Payments pay ON pay.Payment_ID = pur.Payment_ID AND pay.Date > DATEADD(month, -1, GETDATE())
    RIGHT JOIN Products pro
    ON pur.Product_id = pro.Product_ID
    GROUP BY Pro.Title, pur.Employee_id) ppp ON ppp.Empl = emp.Employee_id) ololo
ON mar.Market_ID = ololo.Market_id
ORDER BY NUMBER DESC

OFFSET-FETCH使用 SQL Server 2012+:

SELECT  mar.Title MarketTitle, ololo.NUMBER, ololo.Title from Markets mar
JOIN( 
    Select emp.Employee_ID, emp.Market_id, ppp.Title, ppp.NUMBER from Employees emp
    JOIN(
    select pur.Employee_id Empl,Pro.Title Title, COUNT(pur.Product_id) NUMBER from Purchase pur
    LEFT JOIN  
        Payments pay ON pay.Payment_ID = pur.Payment_ID AND pay.Date > DATEADD(month, -1, GETDATE())
    RIGHT JOIN Products pro
    ON pur.Product_id = pro.Product_ID
    GROUP BY Pro.Title, pur.Employee_id) ppp ON ppp.Empl = emp.Employee_id) ololo
ON mar.Market_ID = ololo.Market_id
ORDER BY NUMBER DESC
OFFSET 0 ROWS
FETCH FIRST 1 ROW ONLY

关于连接的 SQL 限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33964884/

相关文章:

php - 无法弄清楚我的 SQL 语法有什么问题

mysql - 为什么我的 mysql select 返回一个空结果集?

sql - 为什么 SQL Server 不使用我的索引? (过滤连接的索引 View )

sql-server - 为什么 SSIS 导入 8500 条记录所需的时间比通过 SSMS 手动导入的时间要长得多?

javascript - 如何获取所选选项的值(value)?

Android ExpandableListView CheckBox 选择只点击复选框

mysql - 获取每行 COUNT() MYSQL 的 MAX()

mysql - 试图从每 5 分钟显示的 SQL 中获取 3 小时的数据

sql - 连接查询中的表顺序

sql-server - TABLOCK 用于优化插入选择语句的事务日志记录