使用Postgres 9.4和PGAdmin III-我正在尝试将多个表/列与另一个进行比较,并确定未使用的ID。
我似乎找不到正确的选择,计数,存在或不存在的组合(嵌套或并集)来获得所需的结果。我可以轻松获得单个结果,但是很难合并以获得正确的列表。
我有15个表,其中一列或多列引用源表的pkey ID。我想知道源表中哪些ID的标签在其他任何表中都不存在。许多表具有唯一的列名。例如(这不是代码,但本网站坚持是);
var elementToCheckFor = document.querySelector(".delete_this_tr");
var elementsToCheck = document.querySelectorAll(".form-item-row");
elementsToCheck.forEach(element => {
if(element.contains(elementToCheckFor)){
element.parentNode.removeChild(element);
}
});
我想要源表中所有源表中所有引用source.id的其他表的列中都不存在的所有行的标签列表。描述它的另一种方式可能是我想要源表中的唯一列表,以显示其他15个表中的任何一个未引用哪些行。
速度无关紧要,因为这些表行数为数百或几千,而不是数十万。
据我所知,我能够使其工作。我最终添加了一个临时表,使用UNION基本上将15个表中的所有ID临时堆叠起来,它们对临时表执行了简单的NOT EXISTS
"source" table has columns "label" and "id"
"table1" has a column "thisID" which references source.id
"table2" has a column "thatID" which references source.id
"table3" has columns "whatID" and "whoID" which both reference source.id
...and so on
我相信我可以在上面的代码中使用它,但是它看起来一团糟,不必要地复杂而混乱。临时表会一直保留到我删除它为止。有没有更有效,更清洁的方式来完成我需要的工作?