0

、、、などの一意の一般的な情報をuser_info持つというテーブルがあります。 idtitlefirstnamelastnamenumber

useralias2つの列を持つ別のテーブルがあります。useridおよびaliasid

現時点では私はselect * from user_info where timestamp > 'a timestamp'

を考慮に入れて、に基づいてエイリアステーブル内のuser_info各レコードの各レコードの複製を結果に追加するにはどうすればよいですか。useraliasuseridtimestamp

これらの追加レコードのエイリアスIDをに置き換えたい場合を除きますが、別のIDを除いて、そのレコードuseridの正確なコピーがあるかのように残りの詳細を返します。user_info

4

1 に答える 1

1

元のユーザーIDではなくエイリアスだけが必要な場合は、単純な結合で目的が達成されます。

select ua.aliasid, <all columns from user that you want>
from user u join
     useralias ua
     on u.userid = ua.userid

ユーザー ID とエイリアスの両方が必要な場合は、結合先のテーブルを拡張する必要があります。

select ua.aliasid, <all columns from user that you want>
from user u join
     (select userid, aliasid
      from ((select userid, aliasid
             from useralias ua
            )
            union all
            (select userid, userid as aliasid
             from user
            )
           ) t
     ) ua
     on u.userid = ua.userid

このクエリは、ユーザー ID とエイリアス ID のペアのリストを作成し、既存のすべてのユーザー ID を追加します。入会すると、オリジナルのレコードが手に入ります。結合によって接続された 2 つの個別のクエリを使用して、これを行うこともできます。

于 2012-06-02T13:53:25.563 に答える