PostgreSQL 数据库有两个表:user_properties 和 properties。属性表包含所有可能的带有 id 的属性的列表(字典)。user_properties 表包含用户拥有的属性,引用属性表中的属性 ID。
属性表:
----------------------
prop_id | prop_name
----------------------
1 | Email
----------------------
2 | Phone number
----------------------
3 | Something else 1
----------------------
4 | Something else 2
----------------------
user_properties 表:
--------------------------------
user_id | prop_id | prop_value
--------------------------------
100 | 1 | [email protected]
--------------------------------
100 | 2 | 1234567
--------------------------------
100 | 2 | 2345678
--------------------------------
101 | 3 | *******
--------------------------------
101 | 3 | +++++++
--------------------------------
我需要知道每个 user_id 缺少哪些属性。预期结果应如下所示:
-----------------------
user_id | missing_prop_id
-----------------------
100 | 3
-----------------------
100 | 4
-----------------------
101 | 1
-----------------------
101 | 2
-----------------------
101 | 4
-----------------------
感谢大家的帮助。我自己提出了以下查询:
select mp.user_id, mp.prop_id missing_prop_id from
(select distinct up.user_id, p.prop_id from user_properties up cross join properties p) mp
except
select distinct user_id, prop_id from user_properties
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句