2016-12-26 3 views
3

ли гарантии MySQL, что запрос какSELECT * порядок полей

SELECT * from mytable 

выход будет его поля точно в том же порядке, как

DESCRIBE mytable 

делает?

У нас есть правило, что первый столбец всех таблиц всегда является ПЕРВИЧНЫМ КЛЮЧОМ, и хотя, возможно, не всегда хорошая идея полагаться на порядок столбцов в select *, было бы очень полезно убедиться, что первый поле предоставляется PK.

Это конкретный вопрос MySQL и, следовательно, не дубликат ссылки, приведенной ниже.

+2

Возможный дубликат [порядок столбцов в инструкции SELECT \ * - гарантирован?] (Http://stackoverflow.com/questions/11737232/column-order-in-select-statement-guaranteed) – Dekel

+0

@Dekel не дубликат, это даже не та же СУБД –

+1

Ответ на этот вопрос основан на ANSI SQL, который, по-видимому, может немного помочь. Я не уверен, почему голосование по вопросу (или пометка как вне темы), поскольку я считаю, что это хороший вопрос. – Dekel

ответ

3

Ответ: нет, mysql не гарантирует, что столбцы в select * будут в том же порядке, что и в describe tablename. Документация Mysql не определяет порядок столбцов в любом случае. Однако оба утверждения, вероятно, будут перечислять столбцы по их порядковым позициям, поэтому на самом деле результаты должны совпадать.

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

+0

В случае нашей структуры правило состоит в том, чтобы PK был первым столбцом, то есть первым в команде DESCRIBE. –

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