有没有办法将数据库查询的结果与多个带有字段定义的结果连接起来?像:
SELECT COLUMN_NAME
, DATA_TYPE
, CHARACTER_MAXIMUM_LENGTH
, NUMERIC_PRECISION
, NUMERIC_SCALE
, EXTRA
, COLUMN_KEY
, COLUMN_DEFAULT
, IS_NULLABLE
FROM INFORMATION_SCHEMA.COLUMNS
WHERE table_name = 'TABLE_NAME'
AND TABLE_SCHEMA = 'DATA_BASE_NAME';
当一张 table 很简单时。问题是当查询涉及多个表时。
编辑:抱歉我输入了错误的 SQL
最佳答案
更新
当 table 很简单时。问题是当查询涉及多个表时。因此,您正在寻找如何检索某个数据库中的所有表。我对吗?
那么,你为什么不试试这个呢? (删除了一些列以缩短答案):
SELECT TABLE_NAME
, COLUMN_NAME
, ORDINAL_POSITION
, DATA_TYPE
, IS_NULLABLE
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = 'jsheo_test'
ORDER BY TABLE_NAME, ORDINAL_POSITION;
我在您的查询中添加了 ORDINAL_POSITION
以正确显示列在表中的位置。其输出如下:
+------------+-------------+------------------+-----------+-------------+
| TABLE_NAME | COLUMN_NAME | ORDINAL_POSITION | DATA_TYPE | IS_NULLABLE |
+------------+-------------+------------------+-----------+-------------+
| a | a | 1 | int | YES |
| b | a | 1 | int | YES |
| test | name | 1 | varchar | YES |
| test | age | 2 | int | YES |
| test | spent | 3 | int | YES |
| test | gender | 4 | char | YES |
+------------+-------------+------------------+-----------+-------------+
原始。回答
抱歉。我无法理解你的问题。下面的查询始终返回“数据库”(即使删除了 DISTINCT。仅生成一行)。 1 个表的相同列名不能超过 1 个。
SELECT DISTINCT TABLE_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE COLUMN_NAME = 'unique'
AND TABLE_NAME = 'database';
你在找这个吗?
SELECT DISTINCT TABLE_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE COLUMN_NAME = 'unique'
AND TABLE_SCHEMA = 'database'
关于MySQL - 字段定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20217452/