【发布时间】:2023-03-30 23:40:01
【问题描述】:
所以我有三个简单的表
create table user (
id SERIAL PRIMARY KEY,
name TEXT
);
create table item (
user_id INTEGER REFERENCES user(id),
key TEXT,
count INTEGER
);
create table foob (
user_id INTEGER REFERENCES user(id),
value_f TEXT,
value_t TEXT
);
我需要获取与某些项目和 foobs 匹配的所有用户:
select id, name
from user
left join item on item.user_id = user.id
left join foob on foob.user_id = user.id
where item.key = 'my_key' and foob.value_t = 'vtz'
但这会导致相同结果的多个副本,因为item 和/或foob 有多行引用同一用户。由于我只使用其他两个表进行过滤,不需要在我的select 中使用任何一个,我显然不需要多个复制结果。我怎样才能避免这种情况?
在我的真实代码中,我还将json_build_object() 与我的select 一起使用
【问题讨论】:
标签: sql postgresql join left-join postgresql-9.5