我有一个付款表,用于存储付款相关数据。
Student_id is_payment_done timestamp
A111A11 false 2016/11/23 00:00:00
A111A11 false 2016/11/24 12:12:00
A111A11 false 2016/11/24 16:20:11*
B234A12 false
B234A12 false
B124A12 true
B123A12 false
这里我有student_id外键。现在我想根据student_id选择记录,其中is_ payment_done = false
并且我想显示例如的最新记录。上表A111A11
记录全部为is_ payment_dont=false
,最新记录时间戳为2016/11/24 16:20:11*
我对 SQL 非常陌生,我尝试过使用 group by student_id
但我不知道该使用哪个聚合函数以及如何在分组后检查所有记录的 bool 字段。
最佳答案
我的 SQL 方法,不需要子查询或任何东西,因为如果所有记录都为 false,则 MAX(timestamp)
也为 false。如果您没有限制所有记录,您仍然可以使用条件聚合来查找MAX(假时间戳)
。
SELECT
Student_id
,MAX(timestamp) as MaxTimeStamp
FROM
@Payment
GROUP BY
Student_id
HAVING
COUNT(*) = COUNT(CASE WHEN is_payment_done = 'false' THEN 1 END)
但请注意,在示例数据 A111A11、B123A12 和 B234A12 中,所有记录都只有 is_ payment_done = 'false'
关于mysql - 如何根据时间戳和 bool 值查询记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40792741/