如何按数据库内的列对表进行排序?

时间:2015-04-19 22:02:18

标签: php sql pdo sqlite

我知道可以通过从表格中提取数据,操纵数据并重新插入数据来实现,我要问的是,是否有可以执行此操作的查询。

例如,数据库是db.db有表狗。该表具有列id,品种,年龄,名称,其中id是主键和自动递增(为了找到一个好的解决方案,可以改变这个主键假设)。

我已经搜索了很多,但所有地方都说同样的话,就这样做:

$db->query("SELECT breed, age, name FROM Dogs ORDER BY Age DESC");  

但是,正如我之前所说,我想对表格进行排序。这种解决方案适用于结果集,而不是表格本身,这就是我提出这个问题的原因。

更新我很抱歉误导了那些因为没有正确构建问题而阅读我的问题的人,我打算根据Age列对所有列进行排序,但ID列可以保留同样,如果这有所帮助,那就是我试图改变主键假设时所说的,但它出错了。

UPDATE2 在stackoverflow上找到了另一个完全处理此主题的问题,答案类型与用户Quim Calpe给我的答案相匹配,即创建另一个表,执行在那里的东西,然后将其复制到原始表格,现在问题变成了,是不是有更好的方法来做这个并不涉及创建另一个表格?我认为如果表格对于所有这些操作而言非常大而不是让数据库系统以它自己的方式处理它,如果它有一个......那么它可能变得非常耗费资源。

1 个答案:

答案 0 :(得分:1)

您可以执行以下操作:

<?php
$db->query("CREATE TABLE DogsSortedByAge LIKE Dogs");
$db->query("INSERT INTO DogsSortedByAge SELECT * FROM Dogs ORDER BY Age DESC");

但你不能保证数据会以这种方式在磁盘上订购......

无法根据您的要求考虑有效的用例......