这应该能让你入门:
SELECT table_schema
FROM information_schema.columns
WHERE table_name = 'table1' AND column_name = 'id'
;
通过这个,你可以在任何编程语言中使用结果,来为每个数据库撰写特定的查询。
或者,我最近发现类似这样的边缘滥用也很有帮助。
SELECT CONCAT("SELECT '", table_schema, "' "
"FROM `", table_schema, "`.`", table_name, "` "
"WHERE `", column_name, "` = ", searchId
) AS qStr
FROM information_schema.columns
WHERE table_name = 'table1' AND column_name = 'id'
;
你需要将这些结果连接在一起,用
UNION
连接,得到的查询结果应该是一个包含所有拥有与searchId匹配的名称(和列)的表的模式列表。
注:上述不适当的反引号已被替换为单引号,并添加了以下内容。
SET @criteriaVal := "'somestring'";
SELECT CONCAT("SELECT '", table_schema, "' "
"FROM `", table_schema, "`.`", table_name, "` "
"WHERE `", column_name, "` = ", @criteriaVal
) AS qStr
FROM information_schema.columns
WHERE table_name = 'table1' AND column_name = 'id'
;