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

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

@row -array中的元素是否始終與SELECT查詢中寫入的順序相同?SQL:提取順序

回答

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用於提及列順序 – 2011-05-02 14:10:39