SQL:查询数据库中所有表的字段,并在查询结果中返回表、字段、字段描述
Posted
技术标签:
【中文标题】SQL:查询数据库中所有表的字段,并在查询结果中返回表、字段、字段描述【英文标题】:SQL: query all tables in database for field and return table, field, field description in query results 【发布时间】: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)) ;
我的逻辑(如有缺陷请指教,我是来学习的!)
-
第一个查询选择数据库中的所有表进行查询
子查询仅返回那些具有我正在搜索的字段的表及其描述。
我希望我的结果看起来像这样:
------------------------------------------------
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 的数据类型。 你的问题有点不清楚。 ,您可以在一个过程中执行此操作,您可以查看答案中给出的解决方案,并遍历所有结果。 可能无法准确获取您所说的内容。所以,请解释一下你需要对结果做什么。 【参考方案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 一起出现在一行中?以上是关于SQL:查询数据库中所有表的字段,并在查询结果中返回表、字段、字段描述的主要内容,如果未能解决你的问题,请参考以下文章
将一个表的查询结果插入到另一个表中(oracle、mysql、sql 、GP)