phpMyAdmin
 sql >> Base de données >  >> Database Tools >> phpMyAdmin

Requête MySQL pour rechercher un enregistrement dans une base de données complète

C'est une chose un peu compliquée à faire. Et vous ne pouvez vraiment pas le faire en une seule étape. Je vais vous donner quelque chose pour commencer, et vous devrez partir de là :

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

Maintenant, cela produira une sortie comme celle-ci :

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

Maintenant, vous voulez faire demi-tour et exécuter toutes ces commandes... alors procédez comme ceci :

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

Cela vous donnera un fichier texte contenant toutes les commandes que vous recherchez.

Mise à jour---

J'ai raté le "Pour n'importe quel bit de colonne.."

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

Ici, nous utilisons le fait que vous avez dit que vous recherchiez une chaîne, et tous les champs de type chaîne ont un collation_name. Remplacez TOUT par ce que vous recherchez.