Предположим, у меня есть две таблицы данных, которые я хочу сравнить и найти уникальные строки из первой таблицы.
Обе таблицы имеют одинаковую структуру:
product_id mediumint(9) PRIMARY KEY
sku varchar(20) DEFAULT ''
title text DEFAULT ''
table_one пример данных:
product_id sku title
111 SKU-111 Fizzy Sweets
222 SKU-222 Fizzy Pop
225 225-SKU NULL
Данные таблицы table_two
product_id sku title
111 SKU-111 Sweets
222 SKU-222 Fizzy Pop
225 225-SKU NULL
Я использую следующий запрос для поиска уникальных строк из первой таблицы:
SELECT a.product_id, a.sku, a.title FROM table_one a LEFT JOIN table_two b ON a.product_id = b.product_id AND a.sku = b.sku AND a.title = b.title WHERE b.sku IS NULL;
Это дает следующие результаты: product_id sku title 111 SKU-111 Fizzy Sweets 225 225-SKU NULL
Вместо того, чего я хочу:
product_id sku title
111 SKU-111 Fizzy Sweets
Предложения?
Вам также нужно проверить, где a.title IS NOT NULL
.
SELECT a.product_id, a.sku, a.title, b.title as t2
FROM table_one a
LEFT JOIN table_two b ON (
a.product_id = b.product_id
AND a.sku = b.sku AND a.title = b.title
)
WHERE b.title IS NULL
AND a.title IS NOT NULL
SQL Fiddle http://sqlfiddle.com/#!9/2a496a/6