2

こんにちは、2 つのテーブルをマージしようとしています。

左側のテーブルにのみ存在する ID と、右側のテーブルにのみ存在する ID があります。すべてのIDを持つ1つのテーブルを取得したい。私は試した:

select * from temp_hours as a
    left outer join temp_orders as o on a.proj_id = o.proj_id
union
select * from temp_hours as a
    right outer join temp_orders as o on a.proj_id = o.proj_id

しかし、私はエラーが発生します:

Can't reopen table: 'a'

どうすればこれを行うことができますか?サーバーのバージョン: 5.0.51a-24+lenny4 (Debian)

4

3 に答える 3

3

提案どおりに括弧を追加するか、略語を変更します。

select * from temp_hours as a
    left outer join temp_orders as ao on a.proj_id = ao.proj_id
union
select * from temp_hours as b
    right outer join temp_orders as bo on b.proj_id = bo.proj_id
于 2012-05-23T12:01:18.747 に答える
2

選択クエリの周りに括弧を追加するだけです:

(select * from temp_hours as a
    left outer join temp_orders as o on a.proj_id = o.proj_id)
union
(select * from temp_hours as a
    right outer join temp_orders as o on a.proj_id = o.proj_id)

たとえば、docuの例を参照してください。

于 2012-05-23T09:18:29.203 に答える
-1

選択ごとに括弧が必要です

(select * from temp_hours as a
    left outer join temp_orders as o on a.proj_id = o.proj_id)
union
(select * from temp_hours as a
    right outer join temp_orders as o on a.proj_id = o.proj_id)

ただし、発生するエラーは一時的なテーブル制限のようです。

于 2012-05-23T09:18:07.730 に答える