DbCommand
class의 ExecuteReader
명령을 사용하여 SQL 쿼리를 실행하고 있습니다.임의의 순서로 결과를 반환하는 ExecuteReader
SQL 쿼리는이 같은 같습니다 나는 SQL Server 관리 Studio에서이 SQL을 실행하면
SELECT col_A, col_B, col_C
FROM Table_A
UNION
SELECT col_A, col_B, col_C
FROM Table_B
UNION
SELECT col_A, col_B, col_C
FROM Table_C
는 항상 위의 순서로 결과를 반환을, 즉 Table_A 먼저, Table_B 등 뒤에
그러나이 동일한 쿼리를 실행하기 위해 ExecuteReader()
메서드를 사용하면 임의의 순서로 결과가 반환됩니다.
왜 이런 일이 발생하며 어떻게 해결할 수 있습니까?
편집 : 사람들은 SQL에서 순서를 보장 할 수는 없지만 SQL Server Management Studio에서 쿼리를 실행할 때마다 지정된 순서로 다시 돌아옵니다.
'ORDER BY' 절이 없으면 SQL은 고유 한 순서를 보장하지 않습니다. – Michael
SQL MS에서 특정 순서로 결과를 얻는 것은 구현 세부 사항입니다. 그러나 나는 ADO.Net을 통해 같은 명령을받지 못한다는 사실에 놀랐습니다. 그럼에도 불구하고 귀하의 질의는 본질적으로 특정 주문을 보장하지 않습니다. – juharr
SQL Server Mgmt Studio가 항상 해당 주문을 반환하는 경우 - 행운의 ** 우연의 일치 **입니다. 진지하게 : *** ***없이 명시 적'ORDER BY', *** 보장 된 주문 ***이 없습니다 ..... 단지'ORDER BY'를 추가하면 주문을받습니다! –