比较数据集与左连接但防止空值影响结果
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了比较数据集与左连接但防止空值影响结果相关的知识,希望对你有一定的参考价值。
假设我有两个数据表,我希望比较并从第一个表中找到唯一的行。
两个表共享相同的结构:
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小提琴http://sqlfiddle.com/#!9/2a496a/6
以上是关于比较数据集与左连接但防止空值影响结果的主要内容,如果未能解决你的问题,请参考以下文章