您可以使用 MySQL 创建它,并且必须像这样以 PREPARED 语句执行它:
SELECT
CONCAT( "SELECT CONCAT_WS(',',"
, GROUP_CONCAT( CONCAT("COALESCE( `",TABLE_NAME,'`.`',column_name,'`,"-")')
)
, ") AS dane FROM `", @mySchema, '`.`', @tableName, '`'
, " INNER JOIN language on film.language_id = language.language_id")
INTO @msql
FROM INFORMATION_SCHEMA.COLUMNS
JOIN ( SELECT @mySCHEMA:="Kazoku", @tableName:="film" ) as INIT
WHERE
TABLE_NAME= @tableName
AND
TABLE_SCHEMA= @mySchema
ORDER BY
`ORDINAL_POSITION`;
SELECT @msql; -- only for debug output
PREPARE stmt FROM @msql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
样本
MariaDB [Kazoku]> SELECT
-> CONCAT( "SELECT CONCAT_WS(',',"
-> , GROUP_CONCAT( CONCAT("COALESCE( `",TABLE_NAME,'`.`',column_name,'`,"-")')
-> )
-> , ") AS dane FROM `", @mySchema, '`.`', @tableName, '`'
-> , " INNER JOIN language on film.language_id = language.language_id")
-> INTO @msql
-> FROM INFORMATION_SCHEMA.COLUMNS
-> JOIN ( SELECT @mySCHEMA:="Kazoku", @tableName:="film" ) as INIT
-> WHERE
-> TABLE_NAME= @tableName
-> AND
-> TABLE_SCHEMA= @mySchema
-> ORDER BY
-> `ORDINAL_POSITION`;
Query OK, 1 row affected (0.07 sec)
MariaDB [Kazoku]>
MariaDB [Kazoku]>
MariaDB [Kazoku]> SELECT @msql; -- only for debug output
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| @msql |
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| SELECT CONCAT_WS(',',COALESCE( `film`.`id`,"-"),COALESCE( `film`.`datetime`,"-"),COALESCE( `film`.`language_id`,"-")) AS dane FROM `Kazoku`.`film` INNER JOIN language on film.language_id = language.language_id |
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
MariaDB [Kazoku]>
MariaDB [Kazoku]> PREPARE stmt FROM @msql;
Query OK, 0 rows affected (0.00 sec)
Statement prepared
MariaDB [Kazoku]>
MariaDB [Kazoku]> EXECUTE stmt;
+-------------------------+
| dane |
+-------------------------+
| 1,2021-01-01 00:00:00,1 |
+-------------------------+
1 row in set (0.00 sec)
MariaDB [Kazoku]>
MariaDB [Kazoku]> DEALLOCATE PREPARE stmt;
Query OK, 0 rows affected (0.00 sec)
MariaDB [Kazoku]>