Сортировать поля таблицы MySQL - PullRequest
2 голосов
/ 17 июля 2010

Допустим, у меня есть таблица (скажем, 50 строк, 50 столбцов), в которую мне иногда приходится вносить небольшие изменения.Хотя я понимаю, что могу (возможно, некоторые из вас скажут мне, что мне следует) использовать для этого запрос, мне нравится использовать программу управления базами данных (например, Sequel Pro) для внесения изменений вручную.

ИтакУ меня есть два вопроса:

Когда вы делаете запрос без указания порядка отображения результатов, он следует порядку, в котором он был сохранен в базе данных.Есть ли способ изменить порядок ТА (не порядок ваших результатов, порядок в самой таблице) без ручного переключения строк?

Кроме того, есть ли способ автоматически отсортировать способ отображения полей втаблица (порядок столбцов)?

Я знаю, что я должен просто использовать запросы для изменения значений, но (imo) если таблица достаточно мала, мне проще найти строку и столбец впрограмма, подобная Sequel Pro, и просто измените ее таким образом.

Кроме того, если мои методы совершенно неверны, скажите, пожалуйста,

Ответы [ 4 ]

3 голосов
/ 17 июля 2010

http://dev.mysql.com/doc/refman/5.1/en/alter-table.html

ALTER TABLE name ORDER BY something

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

ORDER BY позволяет создавать новую таблицу со строками в определенном порядке.Обратите внимание, что таблица не остается в этом порядке после вставки и удаления.Эта опция полезна, прежде всего, когда вы знаете, что большую часть времени вам нужно запрашивать строки в определенном порядке.Используя этот параметр после значительных изменений в таблице, вы сможете повысить производительность.В некоторых случаях это может упростить сортировку для MySQL, если таблица упорядочена по столбцу, который вы хотите упорядочить позднее.

1 голос
/ 17 июля 2010

Когда вы делаете запрос без указания порядка отображения результатов, он следует порядку, в котором он сохранен в базе данных. Есть ли способ изменить порядок ТА (не порядок ваших результатов, порядок в самой таблице) без ручного переключения строк?

номер

есть ли способ автоматически сортировать отображение полей в таблице (порядок столбцов)?

База данных не заботится о порядке столбцов. Мне сказали, что вы можете выполнить оператор из некоторых SQL IDE, использующих эти столбцы, но он создает новую таблицу и переносит данные под прикрытия.

0 голосов
/ 17 июля 2010

То же самое на непредсказуемый заказ. Если вы хотите, чтобы строки были в определенном порядке, это то, для чего предназначен ORDER BY. Чтобы быть скупым, ваш вопрос похож на вопрос: «Как я могу повернуть машину влево, не используя руль?» Даже если есть какой-то хитрый способ сделать это, какой смысл?

Порядок столбцов RE: MySQL имеет расширение к стандарту SQL, которое позволяет изменить порядок столбцов в таблице. Я верю, что это

ALTER TABLE mytable MODIFY mycolumn varchar(50) AFTER othercolumn;

Это переместит столбец "mycolumn" после "othercolumn". Я думаю, что вы должны указать тип данных - varchar (50) в этом примере, но, конечно, это может быть что угодно - даже если это не изменилось.

Чтобы сделать столбец первым, вы говорите «ПЕРВЫЙ», а не «ПОСЛЕ».

Обратите внимание, что это НЕ стандартный SQL. Большинство механизмов SQL не позволяют указывать порядок столбцов. Некоторые пуристы настаивают на том, что не существует такой вещи, как порядок столбцов, что строка представляет собой набор столбцов без определенного порядка. В реальной жизни, однако, ядро ​​базы данных должно хранить их в НЕКОТОРОМ порядке, и я никогда не видел базы данных, где «select *» не возвращал столбцы в согласованном порядке. Лично я часто пишу общий код, который строит экраны ввода данных из схемы и перечисляет поля в порядке, в котором они возвращаются из «select *». Мне нравится MySQL для такого рода программ, потому что он позволяет мне указывать порядок столбцов в базе данных, а не разбивать его по слоям где-либо еще или перестраивать таблицу, чтобы получить желаемый порядок.

Я не знаком с SQL Pro, но большинство инструментов будут учитывать порядок столбцов СУБД.

0 голосов
/ 17 июля 2010

Цитировать OMG Ponies

Когда вы выполняете запрос без указания порядка отображения результатов, он следует порядку, в котором он был сохранен в базе данных.Есть ли способ изменить порядок ТА (не порядок ваших результатов, порядок в самой таблице) без ручного переключения строк?

Нет.

и добавить, а нетолько вы не можете изменить его, но

следует порядку, в котором оно сохранено в базе данных

не обязательно правильно.Порядок, в котором записи возвращаются из базы данных, не гарантируется в каком-либо определенном порядке, если только вы не используете предложение ORDER BY.

Кроме наличия удобного сценария SQL, который форматирует таблицу в нужном порядке и столбцах, которые вы хотитекоторые вы можете просто вставить каждый раз, когда захотите внести изменения, я не могу вам помочь.

например,

Select ID, FirstColumn, ThirdColumn, SecondColumn from myConfigTable 
Order By FieldToOrder
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...