sql >> Base de Datos >  >> Database Tools >> phpMyAdmin

Consulta MySQL para buscar un registro en una base de datos completa

Esto es algo algo complicado de hacer. Y realmente no puedes hacerlo en un solo paso. Te daré algo para empezar, y tendrás que tomarlo desde allí:

select CONCAT("SELECT * FROM ", TABLE_NAME, " WHERE user_id=1;") FROM INFORMATION_SCHEMA.COLUMNS WHERE COLUMN_NAME="user_id";

Ahora esto producirá una salida como esta:

+--------------------------------------------------------------------+
| CONCAT("SELECT * FROM ", TABLE_NAME, " WHERE user_id=1;")          |
+--------------------------------------------------------------------+
| SELECT * FROM table0 WHERE user_id=1;                              |
| SELECT * FROM table1 WHERE user_id=1;                              |

Ahora, quiere dar la vuelta y ejecutar todos esos comandos... así que hágalo así:

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";

Eso le dará un archivo de texto lleno de todos los comandos que está buscando.

Actualizar---

Me perdí el "Para cualquier bit de columna..."

select CONCAT("SELECT * FROM ", TABLE_NAME, " WHERE ", COLUMN_NAME, "='WHATEVER';") FROM INFORMATION_SCHEMA.COLUMNS WHERE COLLATION_NAME IS NOT NULL INTO OUTFILE 'somepath';

Aquí, estamos usando el hecho de que dijo que está buscando una cadena, y todos los campos de tipo de cadena tienen un nombre de colación. Reemplace LO QUE SEA con lo que está buscando.