如何在数据库中按列对 table 进行排序?
How to sort a table by column inside of a database?
我知道可以通过从 table 中提取数据、对其进行处理并重新插入,我想问的是是否有可以执行此操作的查询。
例如,数据库 db.db 有 table 条狗。 table 中的列 id、breed、age、name 是主键和自动递增(但是为了找到一个好的解决方案,可以更改这个主键假设)。
我找了很多地方,但所有地方都说同样的话,就这样做吧:
$db->query("SELECT breed, age, name FROM Dogs ORDER BY Age DESC");
但是,正如我之前所说,我想对 table 进行排序。这种解决方案适用于结果集,而不是 table 本身,这就是我提出这个问题的原因。
更新: 很抱歉误导了阅读我的问题的人,因为他们没有正确构建问题,我打算根据年龄列对所有列进行排序,但 ID列可以保持不变,如果这有帮助的话,这就是我在更改主键假设时试图说的,但结果是错误的。
UPDATE2 在 Whosebug 上发现了另一个与这个主题完全相关的问题,答案与用户 Quim Calpe 给我的答案相匹配,即创建另一个 table,在那里做这些事情,然后将它复制到原来的 table,现在的问题是,有没有更好的方法来做到这一点而不涉及创建另一个 table?我想如果 table 做所有这些操作都非常大而不是让数据库系统以它自己的方式处理它,如果它有一个......
你可以这样做:
<?php
$db->query("CREATE TABLE DogsSortedByAge LIKE Dogs");
$db->query("INSERT INTO DogsSortedByAge SELECT * FROM Dogs ORDER BY Age DESC");
但是您无法保证数据将以这种方式在磁盘上排序...
想不出您所问的有效用例...
我知道可以通过从 table 中提取数据、对其进行处理并重新插入,我想问的是是否有可以执行此操作的查询。
例如,数据库 db.db 有 table 条狗。 table 中的列 id、breed、age、name 是主键和自动递增(但是为了找到一个好的解决方案,可以更改这个主键假设)。
我找了很多地方,但所有地方都说同样的话,就这样做吧:
$db->query("SELECT breed, age, name FROM Dogs ORDER BY Age DESC");
但是,正如我之前所说,我想对 table 进行排序。这种解决方案适用于结果集,而不是 table 本身,这就是我提出这个问题的原因。
更新: 很抱歉误导了阅读我的问题的人,因为他们没有正确构建问题,我打算根据年龄列对所有列进行排序,但 ID列可以保持不变,如果这有帮助的话,这就是我在更改主键假设时试图说的,但结果是错误的。
UPDATE2 在 Whosebug 上发现了另一个与这个主题完全相关的问题,答案与用户 Quim Calpe 给我的答案相匹配,即创建另一个 table,在那里做这些事情,然后将它复制到原来的 table,现在的问题是,有没有更好的方法来做到这一点而不涉及创建另一个 table?我想如果 table 做所有这些操作都非常大而不是让数据库系统以它自己的方式处理它,如果它有一个......
你可以这样做:
<?php
$db->query("CREATE TABLE DogsSortedByAge LIKE Dogs");
$db->query("INSERT INTO DogsSortedByAge SELECT * FROM Dogs ORDER BY Age DESC");
但是您无法保证数据将以这种方式在磁盘上排序...
想不出您所问的有效用例...