2016-12-26 4 views
3

は、MySQLの保証をい注文その正確 SELECT *フィールドが

DESCRIBE mytable 

と同じ順序で

SELECT * from mytable 

意志出力そのフィールドのようなクエリ?

すべてのテーブルの最初の列は常にPRIMARY KEYですが、select *で列の順序に依存することは必ずしも良いとは限りませんが、最初の列提供されるフィールドはPKです。

これはMySQL固有の質問であり、以下のリンクの複製ではありません。

+2

[SELECT \ *文の列順の可能な複製 - 保証されていますか?](http://stackoverflow.com/questions/11737232/column-order-in-select-statement-guaranteed) – Dekel

+0

@Dekelは重複していませんが、それは同じDBMSでさえない –

+1

答えはANSI SQLに基づいている、それは少し助けるかもしれないと思った。私はそれが良い質問だと思うようになぜ質問を投票(またはトピックとしてオフにマーク)したのかよくわかりません。 – Dekel

答えて

3

答えはいいえ、mysqlはselect *の列がdescribe tablename出力と同じ順序になることを保証しません。どちらの場合でも、MySQLのドキュメントでは列の順序は指定されていません。しかし、どちらのステートメントも列の順序を列挙する可能性が高いため、実際には出力が一致する必要があります。

しかし、どちらのフィールドでもフィールドの順序が同じであっても、pkフィールドが最初にリストされているわけではありません。左端の列だけでなく、どの列にもpkを定義できます。

+0

私たちの構造の場合、ルールは最初の列としてPKを持つことです。すなわち、DESCRIBEコマンドの最初に来ます。 –

関連する問題