2017-12-20 23 views
0

Angenommen, ich habe zwei Datenbanktabellen, die ich vergleichen möchte, und finde eindeutige Zeilen aus der ersten Tabelle.Vergleichen von Datensätzen mit linker Verknüpfung, aber Verhindern, dass Nullwerte Auswirkungen auf die Ergebnisse haben

Beide Tabellen haben die gleiche Struktur:

product_id mediumint(9) PRIMARY KEY 
sku varchar(20) DEFAULT '' 
title text DEFAULT '' 

Table_One Beispieldaten:

product_id sku  title 
111  SKU-111 Fizzy Sweets 
222  SKU-222 Fizzy Pop 
225  225-SKU NULL 

Table_Two Beispieldaten

product_id sku  title 
111  SKU-111 Sweets 
222  SKU-222 Fizzy Pop 
225  225-SKU NULL 

ich die folgende Abfrage verwenden eindeutige Zeilen aus der finden erste Tabelle:

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; 

, die die folgenden Ergebnisse liefert: product_id sku Titel 111 SKU-111 Fizzy Sweets 225 225-SKU NULL

Statt dessen, was ich will, das wäre:

product_id sku  title 
111  SKU-111 Fizzy Sweets 

Verbesserungsvorschläge?

Antwort

1

Sie müssen auch überprüfen, wo 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

Bravo. Vielen Dank. –

Verwandte Themen