假设我有两个数据表,我希望比较并从第一个表中找到唯一的行。
两个表共享相同的结构:
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标题 111 SKU-111 Fizzy Sweets 225 225-SKU NULL
而不是我想要的东西:
product_id sku title
111 SKU-111 Fizzy Sweets
建议?
答案 0 :(得分: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