2011-05-02 21 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