我有這張桌子:
| 用戶識別符號 | CHILD_UID |
|---|---|
| 一個 | {} |
| b | {} |
| C | {一個} |
UID是一個VARCHAR并且CHILD_UID是一個VARCHAR[]。我需要一個回傳 b,c 的查詢。我的意思是沒有孩子的父母名單,檢查uid是否不在任何child_uid行中。
- a 不是父母,是 c 的孩子。
- b 是父母。
- c 是父母。
我試過這個但沒有結果:
SELECT *
FROM table
WHERE NOT uid = ANY(SELECT child_uid FROM table);
換句話說,獲取它uid不在child_uid列中的專案。
uj5u.com熱心網友回復:
child_uid是一個陣列,所以它應該被轉換為一個子串列(使用UNNEST)
SELECT * FROM table
WHERE NOT uid = ANY(SELECT unnest(child_uid) FROM table);
uj5u.com熱心網友回復:
您可以使用 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
在這里試試。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/486192.html
標籤:sql PostgreSQL
下一篇:MySQL從查詢結果中添加列
