2015-04-19 4 views
-1

Я знаю, что это возможно, вытаскивая данные из таблицы, манипулируя им и вставляя в нее, я спрашиваю, есть ли запрос, который может это сделать.Как отсортировать таблицу по столбцу внутри базы данных?

Например, база данных db.db имеет табличных собак. Эта таблица имеет идентификатор столбцов, породу, возраст, имя, находящееся в этом идентификаторе, является первичным ключом и автоматическим приращением (это предположение первичного ключа может быть изменено для того, чтобы найти хорошее решение, однако).

Я искал вокруг много, но все места, говорят то же самое, только сделать это:

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

Но, как я уже говорил раньше, я хочу, чтобы отсортировать таблицу. Такие решения применяются к набору результатов, а не к самой таблице, поэтому я задаю этот вопрос.

UPDATE: Я извиняюсь за то, что ввести в заблуждение людей, которые читают мой вопрос для не обрамление его должным образом, я намереваюсь на сортировку всех столбцов на основе столбца Age, но столбец ID может оставаться такой же, если это помогает , вот что я пытался сказать с изменением предположения первичного ключа, но это получилось неправильно.

UPDATE2 Найдено еще один вопрос на StackOverflow, рассматривавших эту тему точно, ответ вроде соответствует ответ, который был дан мне пользователем Quim Кальпе, то есть, создать еще одну таблицу, делать вещи там, то скопируйте его в исходную таблицу, теперь возникает вопрос, нет ли лучшего способа сделать это, что не связано с созданием другой таблицы? Я полагаю, что это могло бы стать очень ресурсоемким, если бы таблица была чрезвычайно большой, чтобы делать все эти операции, а не позволять системе базы данных обрабатывать ее по-своему, если у нее есть один, который ...

+0

, так что вы хотите изменить порядок строк в таблице, исходя из 'Age'? Для этого есть причина? Как правило, вы не беспокоитесь о заказе, пока вам не нужны результаты. – Sean

+3

Почему вы хотите отсортировать таблицу, а не результат запроса? Базы данных не хранят данные в отсортированной последовательности на диске, а предоставляют предложение SQL «ORDER BY» точно для цели запроса результата запроса. –

+0

@MarkBaker. Что [быстро] (https://stackoverflow.com/questions/ 16622509/how-to-organiz-rows-of-a-table-in-ascending-order-and-to-save-the-table-syndan) [исследование] (https://stackoverflow.com/questions/725717/ default-sort-order-in-mysql-alter-table-order-by) показали, что они ** могут быть заказаны **, но ни команда, ни заказ ** не гарантируют ** порядок (за исключением случаев, когда вы используете 'ORDER BY') – kero

ответ

1

Вы могли бы сделать что-то вроде:

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

Но у вас нет гарантии, что данные будут заказаны, что путь на диске ...

не могу думать действительный случай использования для того, что ваш просят ..

+0

После подходящего ответа я ожидал, что при заказе всех строк, за исключением ID-ID, на основе этого, тогда Я мог бы с помощью числового идентификатора ссылаться на столбцы по заказу Age, это прецедент, о котором я думал, так как я буду обращаться к таблице только с помощью упорядоченного Age, но я никогда не буду использовать столбец Age для этого, но идентификаторвместо этого. Я заново объясню свой вопрос. – wxiiir

+0

Не могли бы вы найти лучший способ, который не связан с созданием новой таблицы, если бы целевыми столбцами были все они, за исключением столбца ID? Спасибо. – wxiiir

+0

Благодарим вас за помощь. К сожалению, это не поможет мне, так как я оставлю это PDO/SQL дерьмо ради моего психического здоровья. Я сыт по горло. На прошлой неделе я тестировал, как будет работать моя CMS, если бы она работала с соответствующей базой данных вместо flatfiles с массивами php и т. Д. Предположительно знающие люди сказали мне попробовать. Базы данных имеют лучшую производительность и настолько просты и гибки в управлении, что говорят. Мой код теперь намного больше, чем эквивалентный файл flatfile/array, потому что я должен продолжать искать хаки, чтобы делать то, что было бы тривиально с массивами и flatfiles, его абсурдом. // End_rant – wxiiir

Смежные вопросы