簡體   English   中英

獲取沒有孩子的父母行

[英]Get rows of parents without children

我有這張桌子:

唯一標識符 CHILD_UID
一種 {}
b {}
c {一種}

UIDVARCHARCHILD_UIDVARCHAR[] 我需要一個返回 b,c 的查詢。 我的意思是沒有孩子的父母列表,檢查uid是否不在任何child_uid行中。

  • a 不是父母,是 c 的孩子。
  • b 是父母。
  • c 是家長。

我試過這個但沒有結果:

SELECT * 
FROM table 
WHERE NOT uid = ANY(SELECT child_uid FROM table);

換句話說,獲取其uid不在child_uid列中的項。

child_uid是一個數組,因此應將其轉換為子列表(使用UNNEST

SELECT * FROM table 
   WHERE NOT uid = ANY(SELECT unnest(child_uid) FROM table);

您可以使用 LEFT SELF JOIN 來檢查是否沒有找到作為孩子的父母:

SELECT parents.UID
FROM       tab parents
LEFT JOIN tab children
       ON parents.UID = ANY(children.CHILD_UID)
WHERE children.UID IS NULL

在這里試試。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM