To dość skomplikowana sprawa. I naprawdę nie da się tego zrobić w jednym kroku. Dam ci coś na początek i będziesz musiał to zrobić:
select CONCAT("SELECT * FROM ", TABLE_NAME, " WHERE user_id=1;") FROM INFORMATION_SCHEMA.COLUMNS WHERE COLUMN_NAME="user_id";
Teraz wygeneruje to takie wyjście:
+--------------------------------------------------------------------+
| CONCAT("SELECT * FROM ", TABLE_NAME, " WHERE user_id=1;") |
+--------------------------------------------------------------------+
| SELECT * FROM table0 WHERE user_id=1; |
| SELECT * FROM table1 WHERE user_id=1; |
Teraz chcesz się odwrócić i wykonać wszystkie te polecenia... więc zrób to tak:
select CONCAT("SELECT * FROM ", TABLE_NAME, " WHERE user_id=1;") FROM INFORMATION_SCHEMA.COLUMNS WHERE COLUMN_NAME="user_id" INTO OUTFILE "some_file_path_and_name";
To da ci plik tekstowy pełen wszystkich poleceń, których szukasz.
Aktualizacja---
Brakowało mi „Dla dowolnego bitu kolumny.”
select CONCAT("SELECT * FROM ", TABLE_NAME, " WHERE ", COLUMN_NAME, "='WHATEVER';") FROM INFORMATION_SCHEMA.COLUMNS WHERE COLLATION_NAME IS NOT NULL INTO OUTFILE 'somepath';
Tutaj używamy faktu, że powiedziałeś, że szukasz ciągu, a wszystkie pola typu ciąg mają nazwę collation_name. Zamień WSZYSTKO na to, czego szukasz.