SQL: выборка-порядок - PullRequest
0 голосов
/ 02 мая 2011
my $sth = $dbh->prepare( "SELECT id, name, size, date FROM $table" );

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

Элементы в массиве @row всегда находятся в том же порядке, в котором они записаны в запросе SELECT?

Ответы [ 4 ]

4 голосов
/ 02 мая 2011

Столбцы всегда будут в том же порядке, что и в запросе SELECT.

Если вы хотите, чтобы строки были в определенном порядке, вы должны указать это с помощью предложения ORDER BY.

3 голосов
/ 02 мая 2011

Модули DBI обычно полагаются на идею, что клиентская библиотека базы данных знает, что нужно возвращать столбцы в порядке оператора select.Но, если вы найдете неясную DBD (DB driver ), которая была реализована наполовину, это ничего не гарантирует.

Но для mainstream клиентских библиотек базы данных хорошо предположить, что они знают, что возвращать столбцы, перечисленные в операторе selectИначе, это не очень хорошая реализация языка SQL - потому что это то, что это означает для SELECT столбцов.

Однако, как упоминалось в других сообщениях, строки не гарантированно будут отсортированы в этом порядке.Для этого вы бы использовали:

SELECT id, name, size, date 
  FROM $table
ORDER BY id, name, size, date
3 голосов
/ 02 мая 2011

Если вам нужно положиться на определенный порядок, вы должны указать ORDER BY, в противном случае база данных может свободно возвращать строки в любом порядке, который она сочтет подходящим.

1 голос
/ 02 мая 2011

Заказ не гарантируется (из SQL), если вы фактически не указали ORDER BY.У вас есть столбец, который вы можете отсортировать?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...