2010-06-11 25 views
9

Sto lavorando a "descrivere tavolo" uscita per mostrare un elenco di campi e le loro tipologie, voglio che il mio chiavi primarie di essere in cima alla lista .. Penso che ci sia alcun modo per ordinare di descrivere i risultati utilizzando SQL (qualcosa come "ordina per") piuttosto che ordinarlo in PHP.Qual è il modo più semplice per ordinare i risultati della query "Descrivi tabella"?

cosa ne pensi ragazzi? grazie

+0

correlati, se è di interesse, ho scritto un * Descrivere tutte le tabelle * in [questo Risposta] (http://stackoverflow.com/a/38679580). Puoi cambiare l'ordine di rompendo il loro cmd e entrando in questo tipo di flessibile. – Drew

risposta

2

Sei corretta. MySQL restituirà sempre le colonne nel loro ordine effettivo, ovvero l'ordine in cui sono fisicamente archiviate nei dati della tabella.

È possibile spostare fisicamente le colonne all'interno della tabella in modo che le chiavi primarie siano le prime, sebbene ciò richieda a MySQL di bloccare la tabella e riscrivere i suoi interi dati nel nuovo ordine. Non è quasi mai la pena.

Se sei solo interessato a presentare un buon output, indipendentemente da come sia strutturata la tabella, puoi effettivamente ordinare le colonne in PHP, magari usando una semplice chiamata usort().

-2

Non utilizzare descrivere, ma utilizzare le tabelle di informazioni di schema che sono forniti dalla maggior parte dei DBMS. Quindi puoi utilizzare semplici selezioni per ottenere le tue informazioni.

+0

In pratica si tratta di "google per le tabelle di informazioni dello schema". Un link, codice o qualsiasi cosa specifica per mysql sarebbe stata utile. –

14

Quando si esegue un SHOW COLUMNS o un DESCRIBE TABLE, si sta davvero utilizzando solo il database speciale incorporato denominato INFORMATION_SCHEMA per estrarre informazioni su una tabella denominata. La cosa divertente è, sembra non restituire le informazioni come una tabella, quindi è impossibile per ottenere i dati restituiti da queste funzioni ad agire come un tavolo (per l'ordinamento, subquerying, etc.).

Fortunatamente, è possibile impostare il proprio query per eseguire la stessa ricerca come SHOW o DESCRIVERE:

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 Type; 

Oltre a OP: Grazie per avermi dato stimolo a cercare il modo di farlo di nuovo. Una volta ho saputo come farlo, ma avevo dimenticato.

+2

FYI (forse ovvio) a chiunque lo esegua: assicurati di sostituire ''table'' con il nome del tavolo che vuoi descrivere, e'' database'' con il nome del database in cui si trova. – jesseplymale

Problemi correlati