【问题标题】:SQL: query all tables in database for field and return table, field, field description in query resultsSQL:查询数据库中所有表的字段,并在查询结果中返回表、字段、字段描述
【发布时间】:2020-10-01 12:39:56
【问题描述】:

这是我的第一个堆栈溢出问题。

我正在尝试查询包含多个表的 MySQL 数据库以获取特定字段(如果存在)。对我来说不幸的是,我正在使用一个数据库,其中不同的字段值可能意味着不同的东西。

那部分没问题,但是我还需要在查询结果中返回表名。有越来越多的桌子。这是我卡住的部分。

这是我尝试过的。

    SELECT table_name FROM information_schema.tables
    WHERE table_schema = 'test_db'
            SELECT IF( EXISTS(
                 SELECT col_name, description
                 FROM table_name
                 WHERE col_name = field_value)) ;

我的逻辑(如有缺陷请指教,我是来学习的!)

  1. 第一个查询选择数据库中的所有表进行查询
  2. 子查询仅返回那些具有我正在搜索的字段的表及其描述。

我希望我的结果看起来像这样:

------------------------------------------------
             query results
------------------------------------------------
table_name | query_field_val | field_description
-------------------------------------------------
table1     | foo             | foo is foo
-------------------------------------------------
table2     | foo             | foo is not bar
-------------------------------------------------
table3     | foo             | foo is in foobar    

这是一个表结构示例(表的数量越来越多,所以如果可能的话,我宁愿不要硬编码表名) 每个表都是不同数据库中另一个表的结果。它包含所有列值和描述。描述与架构无关,它只是一个字符串

---------------------------
          table_1
---------------------------
   col_values | desc
---------------------------
 foo          | foo foo foo
---------------------------
 bar          | bar bar bar
---------------------------
 foobar       | foobar foo

          table_2
---------------------------
   col_values | desc
---------------------------
 foo          | not bar
---------------------------
 foobar       | bar in bar

有没有更好的方法来做到这一点?

我希望这已经足够描述了!感谢您的观看。

【问题讨论】:

  • 您能否解释一下 field_description 是什么或在哪里可以找到它。这里没有那种dev.mysql.com/doc/refman/8.0/en/columns-table.html
  • 您好,我在原始问题中将 field_description 描述为 VARCHAR 的数据类型。
  • 你的问题有点不清楚。 ,您可以在一个过程中执行此操作,您可以查看答案中给出的解决方案,并遍历所有结果。
  • 可能无法准确获取您所说的内容。所以,请解释一下你需要对结果做什么。

标签: mysql database database-design mysql-python


【解决方案1】:

试试这个:

SELECT TABLE_NAME FROM INFORMATION_SCHEMA.COLUMNS 
WHERE TABLE_SCHEMA='test_db' AND column_name = 'col_name';

【讨论】:

  • 这只会返回表格,对吧?我希望从这些表中返回表名、col_name 和描述。
  • 嗨@paulinusia,但是col_name 和descriptions 的值应该大于1,那么您希望它们如何与table_name 一起出现在一行中?
猜你喜欢
  • 2012-04-13
  • 2020-08-05
  • 2013-12-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多