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;
有沒有辦法使用單個查詢做到這一點,還是我需要爲每個學生做一個單獨的查詢(基本上按照上面的循環)?實際的用例更加難以解釋(它與認證記錄有關,需要查看哪些記錄),但概念上它是相同的。