QA@IT

複数のテーブルから、共通のカラムを基準に降順に並べたい

3187 PV

SQLの質問なのですが、
まず前提として複数のテーブルがあり、全てのテーブルにcreated_atという共通のカラムがあります。
そして私は、このcreated_atを基準にして降順に並べ、トップ50件を取りたいのです。

しかしこれをどのように書けばいいかわかりません。
どのようにすれば、この問題を解決できるのでしょうか?ご回答いただけると助かります。

  • もっと具体的に実現したいことを書かれた方がいいでしょう。複数のテーブルを前提にしましたが、それらはどう絡んでくるのですか(テーブル毎の上位50か、全テーブル内の上位50か、テーブルレイアウトに共通点はあるのか)?トップ50件の何を取れればいいのですか?(created_atだけわかればいいのでしょうか) また、DBMSによっても使えるSQLが変わってきますので何をお使いかも書いた方がいいでしょう。 -
  • コメントありがとうございます。たしかにこの内容では必要な前提等が抜けていて、回答は難しいと思いました。申し訳ありませんでした。
    もう少し具体的な状況を説明した、新設の質問をさせていただきました。
    もしよろしければ、そちらも見ていただけると助かります。

    ご指摘ありがとうございました。
    -

回答

サブクエリでUNIONを使う方法はいかがでしょうか。
( TOP 50 はSQL Serverの場合です)

SELECT TOP 50
*
FROM (
 SELECT
 aaa AS col1,
 bbb AS col2,
 created_at
 FROM Table1

 UNION ALL

 SELECT
 ccc AS col1,
 '---' AS col2,
 created_at
 FROM Table2
) t
ORDER BY t.created_at DESC
編集 履歴 (0)
  • ご回答ありがとうございます。

    しかし非常に申し訳ないのですが、私の質問内容が不十分で、前提内容がずれた質問をしてしまいました。
    なので一度この質問を閉じさせていただきます。
    もしよろしければ、新しい質問の方も見ていただけると助かります。

    大変ご迷惑をおかけしました。
    -
ウォッチ

この質問への回答やコメントをメールでお知らせします。