2つの異なるテーブルがあります。cities_buildings
およびmap_buildings
。どちらもまったく同じ列の名前/構造を持っています。
そのようなことをしても、どちらかのテーブルの各レコードを単独で保持することは可能ですか?
SELECT cb.city_id,
cb.type,cb.x,
cb.y,
mb.city_id,
mb.type,
mb.x,
mb.y
FROM cities_buildings AS cb,
map_buildings AS mb
WHERE city_id IN (1,2)
前もって感謝します!
何を達成したいのか完全にはわかりませんが、おそらくこれでうまくいくでしょう:
SELECT * FROM (
SELECT city_id, type, x, y FROM cities_buildings
UNION ALL
SELECT city_id, type, x, y FROM map_buildings
) WHERE city_id IN (1,2)
これにより、テーブルが連結され、city_id
いずれか1つから1または2のいずれかを持つ行が検索されます。
テーブルに重複があり、出力に重複を望まない場合は、のUNION
代わりにを使用してくださいUNION ALL
。ただし、これはパフォーマンスに影響を与えます。
行がどのテーブルから来たかを追跡できるようにしたい場合は、クエリの内部を次のように変更できます。
SELECT city_id, type, x, y, 'cities_buildings' AS table_name FROM cities_buildings
UNION ALL
SELECT city_id, type, x, y, 'map_buildings' AS table_name FROM map_buildings
このアプローチに従う場合、テーブル間に共通の行がないため、UNION
(なしでALL
)を使用しても意味がありません。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加