有没有一种方法可以将数据库查询的结果与多个在字段定义中的结果联接?喜欢:

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

最佳答案

更新

当桌子很容易。问题是当查询涉及多个表时。因此,您正在寻找如何检索特定数据库中的所有表。我对吗?

那你为什么不试试(删除了一些列以缩短答案):

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'

08-28 06:54