Det här är en något komplicerad sak att göra. Och du kan verkligen inte göra det i ett steg. Jag ska ge dig något att börja med, och du måste ta det därifrån:
select CONCAT("SELECT * FROM ", TABLE_NAME, " WHERE user_id=1;") FROM INFORMATION_SCHEMA.COLUMNS WHERE COLUMN_NAME="user_id";
Nu kommer detta att producera utdata så här:
+--------------------------------------------------------------------+
| CONCAT("SELECT * FROM ", TABLE_NAME, " WHERE user_id=1;") |
+--------------------------------------------------------------------+
| SELECT * FROM table0 WHERE user_id=1; |
| SELECT * FROM table1 WHERE user_id=1; |
Nu vill du vända dig om och köra alla dessa kommandon... så gör det så här:
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";
Det ger dig en textfil full med alla kommandon du letar efter.
Uppdatering---
Jag missade "För vilken kolumnbit som helst.."
select CONCAT("SELECT * FROM ", TABLE_NAME, " WHERE ", COLUMN_NAME, "='WHATEVER';") FROM INFORMATION_SCHEMA.COLUMNS WHERE COLLATION_NAME IS NOT NULL INTO OUTFILE 'somepath';
Här använder vi det faktum att du sa att du letar efter en sträng, och att alla fält av strängtyp har ett samlingsnamn. Byt ut WHATEVER med det du letar efter.