Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何查找两个表之间相对于SQL中每个表的不匹配?_Sql_Oracle_Oracle Sqldeveloper - Fatal编程技术网

如何查找两个表之间相对于SQL中每个表的不匹配?

如何查找两个表之间相对于SQL中每个表的不匹配?,sql,oracle,oracle-sqldeveloper,Sql,Oracle,Oracle Sqldeveloper,我有一个表TAB_1,TAB_2,它存储了一些具有模式的孩子的集合 KID_ID (Number(2)) SHIRT_COLOR(VARCHAR (10)) PANT_COLOR(VARCHAR (10)) . TAB_1包含50个孩子的详细信息,而TAB_2包含60条记录。 如果TAB_1和TAB_2之间有45个孩子具有相同的孩子ID、衬衫颜色和裤子颜色,那么我们必须找出TAB_1和TAB_2 w.r.t表TAB_1和TAB_2之间的不匹配 由于45个孩子是常见的,因此TAB_1中有5个孩

我有一个表TAB_1,TAB_2,它存储了一些具有模式的孩子的集合

KID_ID (Number(2))  SHIRT_COLOR(VARCHAR (10)) PANT_COLOR(VARCHAR (10)) .
TAB_1包含50个孩子的详细信息,而TAB_2包含60条记录。 如果TAB_1和TAB_2之间有45个孩子具有相同的孩子ID、衬衫颜色和裤子颜色,那么我们必须找出TAB_1和TAB_2 w.r.t表TAB_1和TAB_2之间的不匹配

由于45个孩子是常见的,因此TAB_1中有5个孩子不匹配,TAB_2中有15个孩子不匹配,现在我们必须检查TAB_1中的5个额外孩子是否具有与TAB_2表中的孩子相同的属性,例如,如果5个孩子中有3个孩子的衬衫与TAB_2表中的孩子匹配,有两个孩子的裤子颜色与TAB_2表中的孩子相匹配,因此TAB_1表中只有一个孩子是纯额外的,而TAB_2表中有11个孩子是纯额外的


请指导如何处理此问题?

我们可以尝试在此处使用完全外部联接,然后仅保留两个表之间不相交的每个表中的记录:

SELECT
    COALESCE(t1.SHIRT_COLOR, t2.SHIRT_COLOR) AS SHIRT_COLOR,
    COALESCE(t1.PANT_COLOR, t2.PANT_COLOR) AS PANT_COLOR,
    CASE WHEN t2.KID_ID IS NULL THEN 'TAB_1' ELSE 'TAB_2' END AS TABLE_SOURCE
FROM TAB_1 t1
FULL OUTER JOIN TAB_2 t2
    ON t1.SHIRT_COLOR = t2.SHIRT_COLOR AND
       t1.PANT_COLOR = t2.PANT_COLOR
WHERE
    t1.KID_ID IS NULL OR
    t2.KID_ID IS NULL;
按照下面的链接查看Oracle中正在运行的演示


先生,我想分别计算每个表的额外kids值,即在第1列和第2列中的额外kids值。此外,我无法在此处获得COALESCE用法,它返回第一个非空值,但此处使用了t1.SHIRT\u颜色,对于问题陈述,是否存在不使用内联函数的查询请查看我的演示链接,然后让我确切知道您希望在此处看到什么。我当前显示的记录只是一个表或另一个表唯一的记录。未显示的记录是两个表之间的共同记录,但我的假设是您无论如何都不想看到这些记录。输出必须是共同的、不匹配的、不匹配的、不匹配的、额外的,对于我的示例案例,表2中的额外值为45,5,15,1,11