我有这个查询:
SELECT DISTINCT ON (users.id)
users.id,
users.name,
users.email,
users.phone,
users.sub,
sup.title,
COUNT(customers.id)
FROM users
LEFT JOIN customers ON users.id = customers.user_id
LEFT JOIN sup_users ON users.id = sup_users.user_id
LEFT JOIN sup ON sup.id = sup_users.sup_id
GROUP BY users.id, users.name, users.email, users.phone, users.sub, sup.title
sup_users
具有以下结构:
Column | Type | Collation | Nullable | Default | Storage | Stats target | Description
-------------+---------+-----------+----------+--------------------------------------------+---------+--------------+-------------
id | integer | | not null | nextval('sup_users_id_seq'::regclass) | plain | |
sup_id | integer | | not null | | plain | |
user_id | integer | | not null | | plain | |
如果它包含多个记录,其中有一个user_id而一个以上的sup_id,则我的查询包含重复的记录。
我可以将查询更改为SELECT DISTINCT
,但是想知道是否有更好的方法吗?
答案 0 :(得分:0)
这是您想要的吗?
SELECT u.*,
(SELECT COUNT(*)
FROM customers c
WHERE u.id = c.user_id
) as num_customers
FROM users u ;
我不明白为什么您要加入未明确引用的表。
答案 1 :(得分:0)
这是我最后遇到的查询:
<CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>