SQL确定几乎相同的行

时间:2015-06-03 15:47:13

标签: sql select

如果我有一个正确数据表,我需要检查我的实际表格,以确保数据是正确的,我有一些如下所示的行:

Data_Check_Table
FRUIT ------- PRICE ------- WEEKS_FRESH ------- SUPPLIER
Apple         $1            1                   Big Co.
Banana        $1            1                   Super Co.

以及包含此信息的实际表格:

Data_Table
FRUIT ------- PRICE ------- WEEKS_FRESH ------- SUPPLIER
Apple         $2            1                   Big Co.
Banana        $1            1                   Super Co.

...并假设还有很多其他行,有些匹配得很好,有些则在某些方面存在不一致(可能是错误的价格?或错误的供应商?可能两者都有。)我如何选择查找这些行哪些与实际数据不一致?

2 个答案:

答案 0 :(得分:3)

Select dt.Fruit,dt.Price, dt.Weeks_Fresh,dtc.Fruit,dtc.Price, dtc.Weeks_Fresh,...
From DataTable dt
FULL OUTER JOIN
DataTable_Check dtc
ON dt.Fruit = dtc.Fruit
AND dt.Price = dtc.Price
.....
Where dt.Fruit IS NULL OR dtc.Fruit IS NULL

完整联接包括每个表中的记录,无论是否存在匹配,因此如果任何一方为空,则表示存在不匹配。

答案 1 :(得分:1)

以下查找与正确记录不匹配的实际记录:

select *
from Data_Table
minus
select *
from Data_Check_Table