所以最初我将其作为测试运行。
SELECT DISTINCT table_schema FROM information_schema.columns WHERE table_schema LIKE '%or';
我环顾四周,找到了显示包含特定表的所有数据库的查询。
然而,是否可以让查询更进一步并执行以下操作:
“选择所有具有特定表的数据库,并且在该表中的特定列中具有特定记录。”?
最佳答案
你不能用 SQL 语句做你想做的事。
但是,您可以使用 SQL 生成您想要的语句。基本语句是:
select "tablename"
from tablename
where columnname = value
limit 1
请注意,值可能需要用单引号括起来。您可以使用以下方法生成:
select concat('select "', c.table_name, '" ',
'from ', c.schema_name, '.', c.table_name, ' ',
'where ', c.column_name, ' = ', VALUE, ' '
'limit 1'
)
from information_schema.columns c
where c.table_name = TABLENAME and c.column_name = COLUMN_NAME;
要将所有语句放在一个长 SQL 语句中,请使用:
select group_concat(concat('select "', c.table_name, '" as table_name',
'from ', c.schema_name, '.', c.table_name, ' ',
'where ', c.column_name, ' = ', VALUE, ' '
'limit 1'
) SEPARATOR ' union all '
)
from information_schema.columns c
where c.table_name = TABLENAME and c.column_name = COLUMN_NAME;
然后我会复制生成的 SQL 语句并运行它。如果愿意,您可以添加一个prepare
语句并动态运行它。
关于mysql - SQL - 获取包含特定记录的数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21247008/