2011-02-10 4 views
0

Quelle est la meilleure chose à aborder quelque chose comme:Interrogation plusieurs tables MySQL

select * from (tables de salon comme "T_DATA___") // non valide

Il y a plus de 600 tables avec le nom T_DATAxy où x et y sont des lettres

+0

Quelle version de MySQL utilisez-vous? –

Répondre

0

Quelque chose s'est vraiment mal passé avec cette conception. Accéder à 600 tables à la fois signifie accéder à 1800 fichiers sur le disque. Vous devriez avoir partitionné ces données à la place. En ce qui concerne la question, j'ai peur que vous ayez besoin d'utiliser une procédure stockée ou une application externe pour créer une instruction de requête UNION multiple. Cependant, il me semble me souvenir qu'il y a une limite de 32 tables fusionnées dans un UNION.

0

Vous pouvez obtenir la liste des tables dont vous voulez les données (afficher des tables comme __), puis utiliser mysql dump, en passant dans cette liste.

http://dev.mysql.com/doc/refman/5.1/en/mysqldump.html

Si vous êtes déterminé à l'obtenir à partir de requêtes SQL, vous pouvez générer des requêtes SQL appropriées à l'aide de macros et de les exécuter à la fois. par exemple. récupérez la liste des tables, remplacez le saut de ligne par "; (newline) select * from", exécutez toutes les requêtes. (Le mode mysql d'emacs rend ce super facile).

Comme le dit l'autre intervenant, vous ne pourrez pas le faire dans une seule requête en raison des limites # -table.