0

3 つのテーブルがあり、それぞれに自動インクリメント PK が含まれています。これらのテーブルの組み合わせから最新 (つまり、ORDERBY DESC) のエントリを選択する必要があります。2 つの結合を使用して、1 つのクエリで実行したいと思います。私の考えは、どういうわけかテーブルを選択し、それを並べ替えてからid DESC、どういうわけか結果をマージすることでした。誰かがこれを行う方法(またはおそらくより良いアイデア)を持っていますか?

(mysql を使用) 編集: 申し訳ありませんが、より詳細な仕様は次のpostsとおりstoriesですfavs。それぞれに (少なくとも) 3 つの列iduidおよびがありdateます。どちらPKです。id自動インクリメント (テーブルごとに個別)。uidは FK ですが、それは無関係です。最新の 20 または 30 エントリを含む結果セットが必要です。

4

2 に答える 2

3

結合のない UNION も可能です。

詳細については、 http://dev.mysql.com/doc/refman/5.0/en/union.htmlを参照してください。

于 2009-08-10T09:24:32.057 に答える
0

テーブルには関係がないので、結合しても意味がありませんよね?

私が理解している限りでは、3 つの異なるテーブルから生成されたレコードを、作成日ごとに 1 つの結果セットで並べ替えたいと考えています。これを実現するには、次の 2 つの方法があります。

  1. 3 つのテーブルすべてに対して、並べ替え可能で一意の PK を使用します。これは PostgreSQL で簡単に実行できます。MySQL では回避策が必要です。自動インクリメント PK で 4 番目のテーブルを作成し、他の 3 つのテーブル PK を 4 番目のテーブル PK を指す FK に変更します。これはやや面倒であり、自動インクリメント フィールドは確実に並べ替え可能なプロパティの良い候補ではないという事実に注意する必要があります (レコードを削除すると、シーケンスにギャップが生じ、後で埋められる可能性があります)。

  2. 3 つのテーブルのそれぞれに列createdを追加し、各レコードの作成日を保存します。UNION は、この列でソートできます。すでに列がありますdate。この列を使用できませんか?

于 2009-08-10T11:30:10.477 に答える