使用SQL进行父子验证

时间:2014-09-22 07:02:45

标签: sql parent-child

我需要帮助使用SQL Query验证同一个表中的父子关系吗?其中父ID(根)具有空值。

1 个答案:

答案 0 :(得分:0)

你可以这样计算孤儿:

select count(*) from T_CHILD where FOO not in (select FOO from T_PARENT);

您可以通过这种方式获取它们的值:

select * from T_CHILD where FOO not in (select FOO from T_PARENT);

如果您只想要空值而不是填充但无效的值,请执行以下操作:

select * from T_CHILD where FOO not in (select FOO from T_PARENT) and FOO is null;

您可以使用复合键执行上述所有操作。以上面的第一个为:

select count(*) from T_CHILD where FOO, BAR not in (select FOO, BAR from T_PARENT);

如果你有类似 Hive 版本的东西不能复合,或者你只是有偏好,你可以这样做:

select count(*) from T_CHILD where FOO||BAR not in (select FOO||BAR from T_PARENT);

您还可以通过“exists”和“join”而不是“not in”进行测试,而那些其他方法通常更快,但我发现“not in”最直观,并且当系统移动时成本较低的员工可维护到生产。