【发布时间】: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 的数据类型。
-
你的问题有点不清楚。 ,您可以在一个过程中执行此操作,您可以查看答案中给出的解决方案,并遍历所有结果。
-
可能无法准确获取您所说的内容。所以,请解释一下你需要对结果做什么。
标签: mysql database database-design mysql-python