Ini akan membantu Anda memulai:
SELECT table_schema
FROM information_schema.columns
WHERE table_name = 'table1' AND column_name = 'id'
;
Dari sini, Anda dapat menggunakan hasilnya dalam bahasa pemrograman apa pun yang Anda gunakan untuk membuat kueri khusus untuk setiap basis data tersebut.
Sebagai alternatif, akhir-akhir ini saya menemukan pelanggaran batas yang mirip dengan ini berguna.
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'
;
Anda menggabungkan hasil ini bersama-sama, dengan UNION
antara, dan kueri yang dihasilkan akan memberi Anda daftar semua skema yang memiliki tabel dengan nama (dan kolom) tersebut yang nilainya cocok dengan searchId.
Sunting:Mengganti backtick yang tidak pantas di atas dengan tanda kutip tunggal, dan... menambahkan ini di bawah.
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'
;