私は400以上のテーブルを持ち、それぞれにカラムタイムスタンプがあります。これらの各テーブルのタイムスタンプの最初の行/レコードを取得したいと思います。 400以上のクエリを実行したくない場合は、これを実行する最善の方法は何ですか?複数のテーブルから1つのレコードを選択してください
答えて
あなたはこのようなUNIONクエリを実行することができます
SELECT Id, yourColumn, timestamp FROM Table001 ORDER BY timestamp DESC LIMIT 1
UNION ALL
SELECT Id, yourColumn, timestamp FROM Table002 ORDER BY timestamp DESC LIMIT 1
UNION ALL
SELECT Id, yourColumn, timestamp FROM Table003 ORDER BY timestamp DESC LIMIT 1
ORDER BY timestamp
はこの文を作成するために、ループを使用します。
SET @resultQuery = NULL;
SELECT
GROUP_CONCAT(
DISTINCT
CONCAT('SELECT * FROM ', table_name, ' ORDER BY timestamp DESC LIMIT 1 ')
SEPARATOR '\r\nUNION\r\n'
)
INTO
@resultQuery
FROM
information_schema.COLUMNS
WHERE
table_schema = '???' AND column_name LIKE '%timestamp';
SELECT @resultQuery;
私は特定のタイムスタンプを選択するのではなく、各テーブルの最初のレコードと列タイムスタンプの対応する値を選択します –
ORDER BYタイムスタンプDESCまたはASC(各テーブル)とLIMIT 1 – cSteusloff
GROUP BYのないGROUP_CONCAT関数does not make感覚.. –
400の+テーブルから最初のレコードの必要性が悪いようなにおいがします同じスキーマを使用している場合は、UNION ALL
:
SELECT * FROM foo ORDER BY timestamp ASC LIMIT 1
UNION ALL
SELECT * FROM bar ORDER BY timestamp ASC LIMIT 1
UNION ALL
SELECT * FROM baz ORDER BY timestamp ASC LIMIT 1
-- etc...
これは、DBが設計されていないので、貧しいデザインかどうかはわかりませんが、私は驚かないでしょう。だから私は800 +長いクエリを作成する必要がありますか? –
- 1. 複数のデータベースからレコードを選択してください
- 2. ジョインテーブルからレコードを1つ選択してください
- 3. 2つ目のテーブルでcount = 1のテーブルから選択してください
- 4. データベースからレコードを1つ選択してください。Flask/Sqlite
- 5. 2つのテーブルから選択してください
- 6. 2つのテーブルから選択してください
- 7. 一致するレコードを1つだけ選択してください
- 8. レコードのサブグループを1つの別個の列で選択してください
- 9. MySQLのクエリ - 1つから選択し、別のテーブルから数えてください
- 10. ただ1つのチェックボックスを選択してください
- 11. C#リストから1つのipをスレッドリストから選択してください
- 12. mysqlの複数の列から1つの列を選択してください
- 13. テーブルクエリ複数のテーブルから1つのフィールドを選択する
- 14. リストビューからラジオボタンを1つだけ選択してください
- 15. ダイナミックラジオボタンで1つだけを選択してください
- 16. RecyclerViewでラジオボタンを1つだけ選択してください。
- 17. チェックボックスを1つだけ選択してください
- 18. いくつかの列に基づいて重複レコードのみを選択してください
- 19. MySQL 2つのテーブルから別々の値を選択してください。
- 20. テーブルからすべての行を選択し、別のテーブルから各行の特定の値を1つ選択してください
- 21. 1つから選択した複数のフォームを選択
- 22. 他のテーブルに存在しないレコードを選択してください。
- 23. 条件付きの2つのテーブルから選択してください
- 24. 2つの条件のあるテーブルから選択してください
- 25. テーブルからTOP N行を選択してください
- 26. SSRS - 段落から1語を選択してください
- 27. から選択してください
- 28. *から選択してください
- 29. MySQLテーブルの各個人のトップXレコードを選択してください
- 30. テーブル(datetimeフィールド)の最新のレコードを選択してください
この種の問題は、デザインが邪魔になることがあります。 – Strawberry