2011-04-20 3 views
0

쿼리에 WITH 문을 사용하려고하지만 결과가 항상 빈 배열입니다. SQL-Server 2005 이상을 사용하는 경우에도 드라이버가 실제로 CTE 쿼리 정의를 사용하지 못하게됩니까? 나는 아무 오류도없고, 단순히 아무것도 얻지 못한다.SQL Server 용 PHP 용 Microsoft 드라이버가 CTE 쿼리 정의를 지원하지 않는 것 같습니다

WITH CarsTemp AS 
(
    SELECT *, ROW_NUMBER() OVER (ORDER BY Model) AS Row 
    FROM Cars 
) 

SELECT * 
FROM CarsTemp 
WHERE Row BETWEEN 1 AND 10 

그러나 일반적인 삽입 구문을 사용하면 정상적으로 작동합니다.

SELECT * FROM 
(
    SELECT *, ROW_NUMBER() OVER (ORDER BY Model) AS Row 
    FROM Cars 
) AS CarsTemp 
WHERE Row BETWEEN 1 AND 10 

아무도 도와 줄 수 있습니까? 왜 이렇게이다?

내 쿼리는 다음과 같습니다

sqlsrv_query($this->mssql, $query, $sqlParams, array("Scrollable" => SQLSRV_CURSOR_KEYSET) 

답변

0

WITH common_table_expression (Transact-SQL)에 따르면, ORDER BY는 CTE_query_definition에서 사용할 수 없습니다. 주문은 CTE_query_definition에서 ORDER BY에 의해 보장 될 수 없으므로

다음 절은 CTE_query_definition에서 사용할 수 없습니다

COMPUTE 또는 COMPUTE BY ORDER

에 의해

OPTION 절

INTO (A TOP 절을 지정하는 경우를 제외) 쿼리 힌트 사용

FOR XML

용 검색

관련 문제