Search code examples
sqlsql-serverlimit

SQL where to use LIMIT in query


I am trying to limit my results to 10. The below query returns all results without the 'LIMIT 10' but when I add LIMIT 10 it gives me an error saying

Incorrect syntax near LIMIT

What am I missing?

SELECT dbo.Organizations.cmoName AS "Organizations not quoted"
    ,dbo.Calls.kbpCallID AS "kbpCallID"
    ,MAX(dbo.CallLines.kblCallLineID) AS "kblCallLineID"
FROM (
    (
        (
            (
                dbo.Organizations LEFT OUTER JOIN dbo.Quotes ON dbo.Organizations.cmoOrganizationID = dbo.Quotes.qmpCustomerOrganizationID
                ) LEFT OUTER JOIN dbo.OrganizationIndustryTypeLinks ON dbo.Organizations.cmoOrganizationID = dbo.OrganizationIndustryTypeLinks.cmdOrganizationID
            ) LEFT OUTER JOIN dbo.Calls ON dbo.Organizations.cmoOrganizationID = dbo.Calls.kbpOrganizationID
        ) LEFT OUTER JOIN dbo.CallLines ON dbo.Calls.kbpCallID = dbo.CallLines.kblCallID
    )
WHERE dbo.Quotes.qmpQuoteID IS NULL
    AND dbo.Organizations.cmoCustomerStatus = 1
    AND dbo.OrganizationIndustryTypeLinks.cmdIndustryTypeID = 'DRAFTING  '
    AND (
        dbo.CallLines.kblAddedDate < DATEADD(dd, - 60, GETDATE())
        OR dbo.CallLines.kblCallID IS NULL
        )
GROUP BY dbo.Organizations.cmoName
    ,dbo.Calls.kbpCallID
ORDER BY dbo.Organizations.cmoName ASC LIMIT 10

Solution

  • In SQL Server: You can use top 10 instead of limit as shown in the below query.

    SELECT TOP 10 dbo.Organizations.cmoName AS "Organizations not quoted"
        , dbo.Calls.kbpCallID AS "kbpCallID"
        , MAX(dbo.CallLines.kblCallLineID) AS "kblCallLineID"
    FROM (
        (
            (
                (
                    dbo.Organizations LEFT OUTER JOIN dbo.Quotes ON dbo.Organizations.cmoOrganizationID = dbo.Quotes.qmpCustomerOrganizationID
                    ) LEFT OUTER JOIN dbo.OrganizationIndustryTypeLinks ON dbo.Organizations.cmoOrganizationID = dbo.OrganizationIndustryTypeLinks.cmdOrganizationID
                ) LEFT OUTER JOIN dbo.Calls ON dbo.Organizations.cmoOrganizationID = dbo.Calls.kbpOrganizationID
            ) LEFT OUTER JOIN dbo.CallLines ON dbo.Calls.kbpCallID = dbo.CallLines.kblCallID
        )
    WHERE dbo.Quotes.qmpQuoteID IS NULL
        AND dbo.Organizations.cmoCustomerStatus = 1
        AND dbo.OrganizationIndustryTypeLinks.cmdIndustryTypeID = 'DRAFTING  '
        AND (
            dbo.CallLines.kblAddedDate < DATEADD(dd, - 60, GETDATE())
            OR dbo.CallLines.kblCallID IS NULL
            )
    GROUP BY dbo.Organizations.cmoName
        ,dbo.Calls.kbpCallID
    ORDER BY dbo.Organizations.cmoName ASC