我有两个表,我将它们连接在一起然后运行group by
子句。问题是我不断收到不需要的数据。
client table
----------
name
company_id
created_at
company table
-----------
name
查询:
SELECT company.name, clients.name, MIN (created_at) created_at
FROM company
INNER JOIN client
ON client.company_id = company.id
group by company.name, client.name
查询返回给我所有用户,但我想要的只是每个公司最初创建的每个用户。知道我需要客户名称,我应该改变什么。
答案 0 :(得分:3)
如果您想要每个公司中的第一个,请使用distinct on
。这是一个很好的结构,仅在Postgres中可用:
SELECT DISTINCT ON (co.name) co.name, cl.name, cl.created_at
FROM company co INNER JOIN
client cl
ON cl.company_id = co.id
ORDER BY co.name, cl.created_at asc;