我有如下表所示的两个表,我想列出在任务表中使用的位置行基,并且不重复location.id,也按任务表中的列排序。左连接和分组由
我不知道如何解决它使用组或其他方法?
(我之前也查过截然不同,但是它限制选择专栏,好像不是我想要的..)
怎么解决?
location
id | status | ...
1 | ...
2 | ...
id SERIAL NOT NULL
task
id | location_id | create_date | start_date | ...
1 | 1 | ...
2 | 1 | ...
3 | 2 | ...
id SERIAL NOT NULL
location_id integer DEFAULT NULL
create_date timestamp without time zone NOT NULL
start_date date NOT NULL
需要输出结果
location order by task.create_date
id | ...
1 | ...
2 | ...
查询
我加选择t.location_id它的工作原理来算,但我仍然有问题,在选择行
计数工作
SELECT count(l.*)
AS total_row_count
FROM location l
LEFT JOIN (
SELECT t.location_id
FROM task t
GROUP BY t.location_id
) t ON t.location_id = l.id
WHERE l.status = ANY($1::int[])
选择
SELECT
l.*
FROM location l
LEFT JOIN (
SELECT t.location_id, t.create_date
FROM task t
GROUP BY t.location_id
) t ON t.location_id = l.id
WHERE l.status = ANY($1::int[])
ORDER BY t.create_date desc NULLS LAST,
l.name asc NULLS LAST, l.id desc NULLS LAST OFFSET $2 LIMIT $3
错误:
column "t.create_date" must appear in the GROUP BY clause or be used in an aggregate function SELECT t.create_date, t.location_id
我不明白你想要得到什么结果。将它显示为一张表格,就像您对样本数据所做的一样。 –
请参阅我的更新,我想获取位置表但不重复位置行 – user1775888
您的示例数据不完整。你能否在相关栏目中提供数据? – GurV