13

フィールドとそのタイプのリストを表示するために「describetable」出力に取り組んでいます。主キーをリストの一番上に配置したいと思います。SQLを使用してdescribeの結果を並べ替える方法はないと思います('orderなど) PHPで並べ替えるのではなく、')で並べ替えます。

みんなどう思いますか?ありがとう

4

3 に答える 3

20

SHOW COLUMNSまたはを実行すると、実際には、名前付きテーブルに関する情報を取得するためにDESCRIBE TABLE呼び出される組み込みの特別なデータベースを使用しているだけです。INFORMATION_SCHEMA面白いことに、情報をテーブルとして返さないように見えるため、これらの関数によって返されたデータをテーブルのように機能させることはできません(並べ替え、サブクエリなど)。

SHOW幸い、またはと同じルックアップを実行するように独自のクエリを設定できますDESCRIBE

select
    COLUMN_NAME as "Field",
    COLUMN_TYPE as "Type",
    IS_NULLABLE as "Null",
    COLUMN_KEY as "Key",
    COLUMN_DEFAULT as "Default",
    EXTRA as "Extra"
from
    INFORMATION_SCHEMA.COLUMNS
where
    TABLE_NAME = 'my table' and
    TABLE_SCHEMA = 'my database'

-- add ordering --
order by COLUMN_TYPE;
于 2010-06-11T13:24:09.360 に答える
3

あなたは正しいです。MySQLは常に実際の順序で列を出力します。つまり、テーブルのデータに物理的に格納されている順序です。

主キーが最初になるようにテーブル内で列を物理的に移動できますが、これにはMySQLがテーブルをロックし、データ全体を新しい順序で書き換える必要があります。それはほとんど価値がありません。

テーブルが実際にどのように構造化されているかに関係なく、優れた出力を表示することに関心がある場合は、おそらく単純なusort()呼び出しを使用して、PHPで列を並べ替えることができます。

于 2010-06-11T12:44:24.883 に答える
-2

describeを使用せずに、ほとんどのdbmsによって提供されるスキーマ情報テーブルを使用してください。次に、単純な選択を使用して情報を取得できます。

于 2010-06-11T12:46:39.547 に答える