Сравнение наборов данных с левым объединением, но предотвращение влияния нулевых значений на результаты

0

Предположим, у меня есть две таблицы данных, которые я хочу сравнить и найти уникальные строки из первой таблицы.

Обе таблицы имеют одинаковую структуру:

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

Предложения?

Теги:
compare

1 ответ

1
Лучший ответ

Вам также нужно проверить, где 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

  • 0
    Браво. Большое спасибо.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню