my $sth = $dbh->prepare( "SELECT id, name, size, date FROM $table" );
while ( my @row = $sth->fetchrow_array ) {
say "@row";
}
@row
- 数组中的元素是否与SELECT查询中的元素顺序相同?
答案 0 :(得分:4)
列将始终与SELECT查询中的顺序相同。
如果您想要按特定顺序排列,则必须使用ORDER BY子句指定它。
答案 1 :(得分:3)
如果您需要依赖某个订单,则必须指定ORDER BY,否则数据库可以按其认为合适的任何顺序自由返回行。
答案 2 :(得分:3)
DBI模块通常依赖于数据库客户端库知道以select语句的顺序返回列的想法。但是,如果您发现一些不明确的DBD(DB 驱动程序)已实现一半,则无法保证。
但对于主流数据库客户端库,可以很好地假设他们知道返回select语句中列出的列。否则,它不是SQL语言的良好实现 - 因为这对 SELECT
列意味着什么。
但是,正如其他帖子中所述,行不保证按此顺序排序。为此你可以使用:
SELECT id, name, size, date
FROM $table
ORDER BY id, name, size, date
答案 3 :(得分:1)
除非您实际指定ORDER BY,否则不保证订单(来自SQL)。你有一个可以分类的专栏吗?