学生1
学生二学生三
我有一个类似的问题,但这次我用一个更复杂的查询来描述我的问题…
我只是想知道是否有一个简单的方法来获得一个不同的计数时,选择在Postgresql加入多行查询(我使用限制和偏移分页,但也许它不是太重要,在这种情况下)。
例如,我有这些表
学生表:
DISTINCT
是在窗口函数之后计算的,因此您必须使用子查询:
SELECT *, COUNT(*) OVER() AS "total_count"
FROM (SELECT DISTINCT student.*
from student
JOIN student_teacher on student_teacher.studentId = student.id
JOIN teacher on student_teacher.teacherId = teacher.id
JOIN teacher_classroom on teacher_classroom.teacherId = teacher.id
JOIN classroom on classroom.id = teacher_classroom.classroomId
) AS subq
LIMIT 10 OFFSET 0;
将内连接和DISTINCT
转化为一系列EXISTS
条件会更有效。