Điều này sẽ giúp bạn bắt đầu:
SELECT table_schema
FROM information_schema.columns
WHERE table_name = 'table1' AND column_name = 'id'
;
Từ đó, bạn có thể sử dụng kết quả bằng bất kỳ ngôn ngữ lập trình nào bạn đang sử dụng để soạn các truy vấn cụ thể cho từng cơ sở dữ liệu đó.
Ngoài ra, gần đây, tôi nhận thấy các hành vi lạm dụng đường biên giới tương tự như điều này hữu ích.
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'
;
Bạn nối các kết quả của điều này với nhau, với UNION
giữa và truy vấn kết quả sẽ cung cấp cho bạn danh sách tất cả các lược đồ có bảng với tên đó (và cột) có giá trị khớp với searchId.
Chỉnh sửa:Đã thay thế các dấu ngoặc kép không phù hợp ở trên bằng dấu ngoặc kép và ... đã thêm dấu ngoặc kép bên dưới.
SET @criteriaVal := "'somestring'";
-- SET @criteriaVal := 3; -- for example
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'
;