2011-05-02 4 views
0
my $sth = $dbh->prepare("SELECT id, name, size, date FROM $table"); 

while (my @row = $sth->fetchrow_array) { 
    say "@row"; 
} 

@row 배열의 요소는 항상 SELECT- 쿼리에 쓰여진 순서와 같은 순서입니까?SQL : fetching-order

답변

3

DBI 모듈은 일반적으로 데이터베이스 클라이언트 라이브러리가 select 문 순서대로 열을 반환한다는 것을 알고 있다는 아이디어에 의존합니다. 그러나 절반 정도 구현 된 모호한 DBD (DB 드라이버)가 발견되면 아무 것도 보장하지 않습니다.

그러나 주류 데이터베이스 클라이언트 라이브러리의 경우 select 문에 나열된 열을 반환하는 것이 좋습니다. 그렇지 않은 경우 SQL 언어를 잘 구현하지 못합니다. 이는 그 의미가 SELECT 열이기 때문입니다. 다른 게시물에서 언급 한 바와 같이

그러나, 보장되지행은 순서대로를 분류. 이를 위해 다음을 사용하십시오 :

SELECT id, name, size, date 
    FROM $table 
ORDER BY id, name, size, date 
1

ORDER BY를 실제로 지정하지 않으면 SQL에서의 순서가 보장되지 않습니다. 정렬 할 수있는 열이 있습니까?

3

특정 순서에 의존해야하는 경우 ORDER BY를 지정해야합니다. 그렇지 않으면 데이터베이스는 적합하다고 생각되는 순서대로 행을 반환 할 수 있습니다.

4

열은 항상 SELECT 쿼리의 순서와 같습니다.

특정 순서로 행을 원할 경우 ORDER BY 절을 사용하여 행을 지정해야합니다.

+0

+1 –