同一 (6) 列で、エントリが異なる 2 つのテーブルがあります。テーブル A と B のすべての一意のエントリを含む、同じ列を持つ「マスター」テーブルを取得したいと考えています。どちらのテーブルにも主キーまたは外部キーは存在せず、エントリの「一意性」はそれぞれによって決定されます。 6 つのフィールドが別のエントリと同一です。つまり、エントリ x の列 1 がエントリ y の列 1 と同じで、残りのすべての列も同じである場合、これら 2 つのエントリは、同じテーブルに存在するか別のテーブルに存在するかに関係なく、一意ではないと見なされます。私は同様の解決策を調査して見つけましたが、この問題を完全に解決するものはありません。何かご意見は?
2 に答える
1
AUNION
は間違いなくここで必要なものですが、@PhilCross からのクエリには無関係な項目がいくつかあります。
はすべての列を選択するときに自然にこれを行う
GROUP BY
ため、結果を平坦化する必要はありません。UNION
同様に、
HAVING
も必要ありません。最初のリストが結果の列名を決定するため、クエリの列エイリアスは
UNION SELECT
MySQL によって無視されます。SELECT
a に必要なのUNION
は、(a) すべてのSELECT
ステートメントの列数が同じであること、および (b) 対応する列のデータ型が同じであること、または暗黙的にキャスト可能であることだけです。かっこも必要ありませんが、クエリが読みやすくなる場合は、かっこを含める必要があります。
したがって、本当に必要なのは次のとおりです。
SELECT column1 AS column1, column2 AS column2, column3 AS column3
FROM table1
UNION SELECT column1, column2, column3
FROM table2
于 2013-05-28T15:14:10.563 に答える
1
ユニオンステートメントを使用できます:
(
SELECT column1 AS column1, column2 AS column2, column3 AS column3
FROM table1
) UNION (
SELECT column1 AS column1, column2 AS column2, column3 AS column3
FROM table2
)
GROUP BY column1, column2, column3
HAVING COUNT(column1, column2, column3)>0
于 2013-05-28T14:54:20.260 に答える