0
是否有可能在查询执行时根据其中一列的值动态更改where子句?也就是说,我们可以说(这完全是一个例子),我有一张学生表,参加的班级,以及是否迟到。我想为每个学生查看自上次迟到以来他们参加过的所有班级的列表。因此,查询将是这个样子:Postgresql不同的地方根据列值?
SELECT student, class, classdate
FROM attendance
WHERE classdate>(<<SOME QUERY that selects the most recent tardy for each student>>)
ORDER BY student,classdate;
,或者将其投入更多的编程术语来说,或许更清楚:
for studentName in (SELECT distinct(student) FROM attendance):
SELECT student, class, classdate
FROM attendance
WHERE classdate>(SELECT classdate
FROM attendance
WHERE tardy=true AND student=studentName
ORDER BY classdate DESC
LIMIT 1)
ORDER BY classdate;
有没有办法使用单个查询做到这一点,还是我需要为每个学生做一个单独的查询(基本上按照上面的循环)?实际的用例更加难以解释(它与认证记录有关,需要查看哪些记录),但概念上它是相同的。