2015-12-15 6 views
0

Привет, у меня есть инструкция SQL Мне нужно LIMIT и просто не могу получить синтаксис правильно!Неправильный синтаксис рядом с 'LIMIT'

$strSQL = 'SELECT * FROM BlogItem WHERE Blog_Live=1 LIMIT '.$rowsperpage.' OFFSET '.$offset.''; $objQuery = mssql_query($strSQL) 
or die ("Error Query [".$strSQL."]"); 

Может ли кто-нибудь дать мне совет?

EDIT:

Я использую SQL Server 2008

Пробовал так:

$strSQL = "SELECT * FROM BlogItem WHERE Blog_Live=1 AND RowNum >= ".$offset." AND RowNum < ".$offset." + ".$rowsperpage.""; 
+0

Вы уверены, что вы используете SQL Server? Потому что это синтаксис MySQL, который вы используете там. Если это SQL Server, это дублированный вопрос, и, надеюсь, вы можете использовать более новые 'OFFSET' и' FETCH', упомянутые в одном из ответов дубликата, который я обозначил .... –

+0

Каковы значения переменные '$ rowsperpage' и' $ offset'? – Ben

+0

Попробуйте это один раз. '$ strSQL =" SELECT * FROM BlogItem WHERE Blog_Live = 1 LIMIT $ rowsperpage OFFSET $ offset "; $ objQuery = mssql_query ($ strSQL) или die ("Error Query [". $ StrSQL. "]"); ' –

ответ

0

пытались ли вы, как этот

SELECT * FROM <table> 
    ORDER BY <columns> 
    OFFSET <EXPR1> ROWS 
    FETCH NEXT <EXPR2> ROWS ONLY 

Пример:

SELECT * FROM t_book AS P 
    ORDER BY P.barcode 
    OFFSET 10 ROWS 
    FETCH NEXT 20 ROWS ONLY 

или

;WITH Results_CTE AS 
(
    SELECT 
     Col1, Col2, ..., 
     ROW_NUMBER() OVER (ORDER BY SortCol1, SortCol2, ...) AS RowNum 
    FROM Table 
    WHERE <whatever> 
) 
SELECT * 
FROM Results_CTE 
WHERE RowNum >= @Offset 
AND RowNum < @Offset + @Limit` 
Смежные вопросы