私は約200のテーブルを持つデータベースを持っており、特定の列(creation_date)を含むすべてのテーブルに対してクエリを実行する必要がありますが、すべてのテーブルにその列があるわけではありません。 SELECT * FROM * WHERE creation_date>=42
は明らかに機能しませんが、それを実行する最善の方法は何でしょうか?(私)SQL:FROM句のワイルドカード?
答えて
あなたがそうのように照会したいテーブルを含めるように試みることができます。
SELECT * FROM table1 a, table2 b WHERE a.creation_date>=42
あなたがからにワイルドカードを使用することはできません。上記のようにwhere句をどのテーブルに適用するかを指定することができます。列を持たないものは除外することができます。
例のクエリでは、table1(別名a)には列があり、table2(別名b)には含まれません。
このステートメントは、結合条件が指定されていないため、これら2つのテーブルの間にデカルト積を作成するので、非常に危険です。適度なサイズのテーブルであっても、これは巨大な結果を生成します –
あなたは絶対に正しいです...しかし答えは質問です。しかし、良いコメントです! –
-1、あなたは組合が必要で、クロスジョインは必要ありません。 '' table1 union select f1 from table2 union select .... 'を選択してください。 – Johan
メタデータから動的SQLクエリを作成できます。私はこのようにアプローチします:
- は、テーブル、カラム
creation_date
- を持っている場合、それは、このテーブルにクエリを追加しない場合を参照してください
- 、各テーブルのテーブル
- のリストを取得します。動的なクエリ
- 連合ます。また、複数のテーブル上のビューを作成することができるかもしれない一緒に結果
。次に、ビューを照会するだけです。
のMySQLから直接コピーSELECT COLUMN_NAME, DATA_TYPE, IS_NULLABLE, COLUMN_DEFAULT, TABLE_NAME,
FROM INFORMATION_SCHEMA.COLUMNS
WHERE table_name = 'tbl_name'
[AND table_schema = 'db_name']
[AND column_name ='creation_date']
- あなたはこれらのシステムテーブルを通してループする必要があり、リストは、それらが含まれています...
、あなたはあなたのSQLステートメントを構築し、それらが動作することを確認することができます...
- 1. SQL:FROM句を省略する
- 2. 番号句のワイルドカード
- 3. In()とワイルドカードを使用するSQL Serverのwhere句
- 4. 私は次のような句が句
- 5. where句でワイルドカードを使用する方法は?
- 6. Railsの - 私は、次の句き
- 7. Railsの私が行うとWHERE句
- 8. Djangoのワイルドカード(Objects.filter)
- 9. Pythonのワイルドカード?
- 10. マルチレベルジェネリックタイプのJavaワイルドカード
- 11. jQueryセレクタのワイルドカード
- 12. データステップ内のワイルドカード
- 13. DateTimeFormatterのワイルドカード
- 14. のXPathワイルドカード
- 15. jnlpテンプレートファイルのワイルドカード
- 16. ワイルドカードのMatchcase
- 17. クラスのワイルドカード
- 18. getElementsByTagName(xml.dom.minidom)のワイルドカード
- 19. if文のワイルドカード
- 20. www。ワイルドカードのリダイレクト
- 21. dlookupのワイルドカード
- 22. LINQのOrderBy句 - 私は、次のLINQのOrderBy句を持って常にトップ
- 23. は、ワイルドカード
- 24. OracleのCONNECT BY句句
- 25. ジェネリックスのワイルドカードのインスタンス
- 26. graylogのキーのワイルドカード
- 27. は、私は、次のmysqlのクエリを実行したいワイルドカード
- 28. Express/node.jsルータのワイルドカード
- 29. SQL Server CEのワイルドカード
- 30. asp.net mvcルートのワイルドカード
質問したいテーブルを明示的に含める必要があると思います... – Marco
達成しようとしているのは正確ですか?なぜその列を含むすべてのテーブルからすべての行(条件を満たす)が必要なのですか?それは非常に奇妙なことのように聞こえる –
可能重複:http://stackoverflow.com/questions/639531/mysql-search-in-all-fields-from-every-table-from-a-database – reggie