Shirt1:
1;1;"green_shirt";1;1;1
4;4;"yellow_shirt";1;1;1
Shirt2:
1;1;"green_shirt";1;1;1
2;2;"red_shirt";1;1;1
3;3;"orange_shirt";1;1;1
SELECT shirt2.*
FROM shirt1
RIGHT OUTER JOIN shirt2 ON shirt1.key = shirt2.key
WHERE shirt1.description != shirt2.description OR
IFNULL(shirt1.size, -1) != IFNULL(shirt2.size, -1) OR
IFNULL(shirt1.timestamp, -1) != IFNULL(shirt2.timestamp, -1) OR
IFNULL(shirt1.is_on, -1) != IFNULL(shirt2.is_on, -1)
UNION ALL
SELECT shirt1.*
FROM shirt2
RIGHT JOIN shirt1 ON shirt1.key = shirt2.key
WHERE shirt1.description != shirt2.description OR
IFNULL(shirt1.size, -1) != IFNULL(shirt2.size, -1) OR
IFNULL(shirt1.timestamp, -1) != IFNULL(shirt2.timestamp, -1) OR
IFNULL(shirt1.is_on, -1) != IFNULL(shirt2.is_on, -1)
UNION ALL
SELECT shirt1.*
FROM shirt1
INNER JOIN shirt2 ON shirt1.key = shirt2.key
WHERE shirt1.description = shirt2.description OR
IFNULL(shirt1.size, -1) = IFNULL(shirt2.size, -1) OR
IFNULL(shirt1.timestamp, -1) = IFNULL(shirt2.timestamp, -1) OR
IFNULL(shirt1.is_on, -1) = IFNULL(shirt2.is_on, -1)
出力:
2;2;"red_shirt";1;1;1
3;3;"orange_shirt";1;1;1
4;4;"yellow_shirt";1;1;1
1;1;"green_shirt";1;1;1
あなたはshirt1/shirt2に含まれているTシャツを除外したい場合は、単に削除する必要が最後の組合それは
SELECT shirt2.*
FROM shirt1
RIGHT OUTER JOIN shirt2 ON shirt1.key = shirt2.key
WHERE shirt1.description != shirt2.description OR
IFNULL(shirt1.size, -1) != IFNULL(shirt2.size, -1) OR
IFNULL(shirt1.timestamp, -1) != IFNULL(shirt2.timestamp, -1) OR
IFNULL(shirt1.is_on, -1) != IFNULL(shirt2.is_on, -1)
UNION ALL
SELECT shirt1.*
FROM shirt2
RIGHT JOIN shirt1 ON shirt1.key = shirt2.key
WHERE shirt1.description != shirt2.description OR
IFNULL(shirt1.size, -1) != IFNULL(shirt2.size, -1) OR
IFNULL(shirt1.timestamp, -1) != IFNULL(shirt2.timestamp, -1) OR
IFNULL(shirt1.is_on, -1) != IFNULL(shirt2.is_on, -1)
出力を意味します
2;2;"red_shirt";1;1;1
3;3;"orange_shirt";1;1;1
4;4;"yellow_shirt";1;1;1
をので、私は、これはよりよい解決策であるべきだと思いますが、同じ列内のすべてのものをしたいと思います。もしあなたがshirt1/shirt2のために異なった列を持っていることが大丈夫なら、あなたはselect *を使用して、共用体を無視することもできます。
デバイスに関する質問:デバイスに依存しますが、デバイスが古い場合は、クエリが主な問題になるとは思われません。パフォーマンスを向上させるために、いくつかのインデックスを追加することもできます。
編集:ソリューションをキー列に追加するように変更しました
実際のデータで実際のデータを試してみて、実際のデバイスの性能を確認してください。 –