2013-11-28 2 views
0

뷰에서 행을 선택했습니다 (뷰의 where 절이 정적 데이터에 있음). 아래의 SQL을 실행하면 매번 동일한 결과가 나타납니다. recordsIds가 같고 순서는 같지만 완전히 다릅니다.다른 결과를주는 동일한 SQL 문

2012 년 SQL SEVERVER를 사용하고 있습니다. 왜이 결과가 다른지 설명 할 수 있습니까?

Screen dump of sql server

+0

정확히 무엇이 문제입니까? 'order by' 절은 숫자순으로 정렬하도록 지시하고 게시 된 스크린 샷은 결과가 순서대로 되돌아 왔음을 나타냅니다. –

+0

그/그녀는 왜 * 동일한 5 개의 * RecordId가 각각의 경우에 반환되지 않는지 궁금합니다 – Shai

+0

누군가가 당신에게 트릭을했을 가능성이 있습니까? 'Recordld'와'RecordId' 두 컬럼을 만들었습니까? 첫 번째 것은 소문자 L이고, 다른 하나는 Capital i입니까? – cha

답변

6

우리는 뷰의 정의를 참조해야합니다. 보기가

select top 5 * from MyTable 

으로 정의되어 있다고 가정 해 봅시다.이보기는 호출 될 때마다 5 개의 다른 행을 반환 할 수 있습니다. 또는보기가 무작위로 선택된 행을 반환하도록 설계되었습니다.

+0

+1 - 멋진 캐치. –

+0

보기를 작성했지만 뷰에 순서가 없어도 다른 행을 반환하도록 설계되지 않았습니다. 하지만 그것도 마찬가지입니다.보기에 TOP 5가 맞습니다. 다른 것을 선택할 때 순서가 달라진다는 것을 의미합니까? – user1909158

+0

보기에서 순서를 지정합니다. 이제는 원하는 방식으로 작업하고 있습니다. – user1909158