非常に興味深い問題。「国」を削除すると、問題が解決するようです。
SELECT DISTINCT PostalCode, City, Region
合計 128 件、クエリにかかった時間は 0.0066 秒
SELECT DISTINCT PostalCode, City, Region, Country
合計 209 件、クエリにかかった時間は 0.0002 秒
さらに、動作は以下にのみ影響しているようImportCustomers
ですImportOrders
:
SELECT postalcode, city, region, country
FROM
(SELECT postalcode, city, region, country FROM importcustomers
UNION
SELECT shippostalcode, shipcity, shipregion, shipcountry FROM importorders) t
合計 172 件、クエリにかかった時間は 0.0053 秒
SELECT postalcode
FROM
(SELECT postalcode FROM importcustomers
UNION
SELECT shippostalcode FROM importorders) t
合計 91 件、クエリにかかった時間は 0.0050 秒
country
次に、上の列にimportcusotmers
絞り込みましたimportorders
SELECT TRIM(country) AS country FROM importcustomers
UNION
SELECT TRIM(shipcountry) AS country FROM importorders
アルゼンチン
アルゼンチン
オーストリア
オーストリア
ベルギー
ベルギー
...
列をキャストすると、興味深いことが起こりましたBINARY
SELECT BINARY country AS country FROM importcustomers
UNION
SELECT BINARY shipcountry AS country FROM importorders
アルゼンチン
417267656e74696e610d
オーストリア
417573747269610d
ベルギー
42656c6769756d0d
...
テーブルImportOrders
が重複の原因です。
SELECT BINARY shipcountry AS country FROM importorders
4765726d616e790d
5553410d
5553410d
4765726d616e790d
...
あなたが提供したダンプを見ると、国の終わりに余分な\r
(値で表される) が追加されています。0d
--
-- テーブル `importorders` のデータをダンプしています
--
INSERT INTO `importorders` 値
...'ドイツ\r')、
...'USA\r'),
...'USA\r'),
...'ドイツ\r')、
...'メキシコ\r'),
見栄えの良いimportcustomers
場所:country
--
-- テーブル `importcustomers` のデータをダンプしています
--
INSERT INTO `importcustomers` 値
...「ドイツ」、...、
...「メキシコ」、...、
...「メキシコ」、...、
...'イギリス'、 ... 、
...「スウェーデン」、...、
\r
次のクエリを実行すると、これらの (キャリッジ リターン)を削除できます。
UPDATE importorders SET ShipCountry = REPLACE(ShipCountry, '\r', '')
元のクエリを実行すると、目的の結果セットが得られます。DISTINCT
参考までに、を使用している場合は必要ありませんUNION
。
SELECT PostalCode, City, Region, Country
FROM
(SELECT postalcode, city, region, country FROM importemployees
UNION
SELECT postalcode, city, region, country FROM importcustomers
UNION
SELECT postalcode, city, region, country FROM importproducts
UNION
SELECT shippostalcode as postalcode, shipcity as city,
shipregion as region, shipcountry as country FROM importorders) T