MySQL - 字段定义

时间:2013-11-26 12:44:47

标签: mysql

有没有办法将数据库查询连接的结果转换为多个在结果中使用字段定义?像:

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

1 个答案:

答案 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'