[英]Get rows of parents without children
我有這張桌子:
唯一標識符 | CHILD_UID |
---|---|
一種 | {} |
b | {} |
c | {一種} |
UID
是VARCHAR
而CHILD_UID
是VARCHAR[]
。 我需要一個返回 b,c 的查詢。 我的意思是沒有孩子的父母列表,檢查uid
是否不在任何child_uid
行中。
我試過這個但沒有結果:
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.