有没有办法将数据库查询连接的结果转换为多个在结果中使用字段定义?像:
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';
表格很简单。问题是当查询涉及多个表时。
编辑:对不起,我把错误的SQL
答案 0 :(得分:0)
表格很简单。问题是当查询涉及多个表时。所以,您正在寻找如何检索某个数据库中的所有表。我对吗?
那么,你为什么不试试呢? (删除了一些列以缩短答案):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 |
+------------+-------------+------------------+-----------+-------------+
对不起。我无法理解你的问题。下面的查询总是返回'database'(即使删除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'