phpMyAdmin
 sql >> Datenbank >  >> Database Tools >> phpMyAdmin

MySQL-Abfrage, um einen Datensatz in der vollständigen Datenbank zu suchen

Dies ist eine etwas komplizierte Sache. Und das geht wirklich nicht in einem Schritt. Ich gebe Ihnen etwas, mit dem Sie beginnen können, und Sie müssen es von dort aus übernehmen:

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

Jetzt wird dies eine Ausgabe wie diese erzeugen:

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

Jetzt wollen Sie sich umdrehen und all diese Befehle ausführen ... also machen Sie es so:

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

Dadurch erhalten Sie eine Textdatei mit allen Befehlen, nach denen Sie suchen.

Aktualisieren ---

Ich habe das "For any column bit.." vermisst.

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

Hier verwenden wir die Tatsache, dass Sie gesagt haben, dass Sie nach einer Zeichenfolge suchen, und alle Felder vom Typ „Zeichenfolge“ einen collation_name haben. Ersetzen Sie WAS auch immer durch das, wonach Sie suchen.