Mysql
 sql >> Database >  >> RDS >> Mysql

Raggruppa l'output di SHOW COLUMNS in un elenco delimitato da virgole

Dai un'occhiata alla tabella information_schema.columns

select group_concat(column_name order by ordinal_position)
from information_schema.columns
where table_schema = 'database_name' and table_name = 'table_name'

modificare. Lo schema delle informazioni ti consente di eseguire query sui metadati. Quindi puoi persino confrontare i campi tra tabelle con un join sinistro, ad esempio.

modificare. Ciao chris. Felice che tu abbia risolto. Come hai detto, il tuo problema era abbastanza diverso perché riguardava server diversi. Aggiungo un esempio di due database diversi sullo stesso server.

create database db1;
use db1;
create table table1(
id int not null auto_increment primary key,
name varchar(50),
surname varchar(50),
dob date)
engine = myisam;

create database db2;
create table db2.table2 like db1.table1;
alter table db2.table2 drop column dob;

select i1.column_name from (
select column_name
from information_schema.columns 
where table_schema = 'db1' and table_name = 'table1' ) as i1
left join (
select column_name
from information_schema.columns 
where table_schema = 'db2' and table_name = 'table2' ) as i2
on i1.column_name = i2.column_name
where i2.column_name is null

e il risultato ovvio è dob che è presente nella tabella1 e non nella tabella2.

Spero che aiuti qualcun altro. Saluti ragazzi. :)