2017-03-09 10 views
-1

私は2つのテーブルがあります。その結果にMySQLの - いけない任意の重複行を表示

SELECT column1 FROM `table1` UNION DISTINCT SELECT column1 FROM `table2` 

table1 
id | column1 
1 | a 
2 | b 
3 | c 

table2 
id | column1 
1 | a 
2 | b 
3 | d 

私だけ表示したい:

3 |d 
3 |c 

をこれまでのところ、私は使用してみてくださいを私はユニークな値を持っていますが、私はそれを望んでいます:その2つのテーブルに重複値がある場合は、それらのいずれかを表示しません

編集 申し訳ありませんが出力にミサワイクがあります

+1

何のために感謝ですTABLE1から 選択カラム1 | c'?あなたのRDBMSは何ですか? –

+0

もう少し複雑にするためにいくつかのテーブルデータを追加します。 (1、c)、(4、a)をtable1に割り当てる。 – jarlh

+0

私はいくつかの誤った発言をします。もちろん、出力は3 | c – pdnb

答えて

0

解決策は単純だった:カラム1を超えていない(表2からカラム1を選択)で

は、MySQL

ための構文は `約3ガイド付きに私

0

これを達成しようとしていますか?

SELECT ISNULL(table1.id, table2.id) AS id, ISNULL(table1.column1, table2.column1) AS column1 
FROM table1 
    FULL OUTER JOIN table2 ON table1.column1 = table2.column1 
WHERE (table1.column1 IS NULL AND table2.column1 IS NOT NULL) 
    OR (table1.column1 IS NOT NULL AND table2.column1 IS NULL); 

ない場合は、正確にあなたがを複製によって何を意味するかについて、より多くのデータや情報を提供してください。

0

あなたは組合の外にある値を正しくしたいですか?

何について:

SELECT column1 FROM `table 1`, `table 2` 
MINUS (or EXCEPT, depending on your dbms) 
SELECT column1 FROM `table1` UNION SELECT column1 FROM `table2` 
+0

dbmsが指定されていない質問に対する製品固有の回答。少なくとも、これがどのdbmsであるかを教えてください。 – jarlh

0

最初のクエリは、表1に存在しない表2から表2及び第二の1つのレコードに存在しないTABLE1からレコードを示しています。 Union allは、2つのクエリの結果セットを結合するために使用されます。

select id, column from table1 
    where (id, column) not in (select id, column from table2) 
    union all 
    select id, column from table2 
    where (id, column) not in (select id, column from table1) 
+1

コードのみの回答は低品質の回答とみなされます。 –

+0

あなたの提案をありがとう。私はこの場合、この単純なコードは説明を必要としないと思います。 – NikNik

+0

このコードスニペットは歓迎されていますが、いくつかの助けを与えるかもしれませんが、* how *と* Why *がこれを解決するのは、説明があれば大幅に改善されます(// meta.stackexchange.com/q/114762)問題。あなたが今質問している人だけでなく、将来読者のための質問に答えていることを忘れないでください!説明を追加するためにあなたの答えを[編集]し、どんな制限と前提が適用されるかを示してください。 –

1
select * 
from 
(
    select * from table1 
    union all 
    select * from table2 
) 
except all 
(
    select * from table1 
    intersect all 
    select * from table2 
) 

UNION ALL有する)第一のサブクエリは、両方のテーブルからすべての行を返します。

2番目のサブクエリ(INTERSECT ALL)は、テーブルの共通の行を返します。

すべての行(UNION ALL結果を)取るとEXCEPT ALLを使用して、共通の行(INTERSECT ALL行)を削除します。

関連する問題