1

我有以下语法:

SELECT t1.cardid, t1.Name, t2.record
FROM t2 INNER JOIN t1 on t1.tag=t2.tag GROUP BY t1.cardid, t1.name

结果是这样的:

cardid      name       record
100         Dan        09:00
100         Dan        10:00
200         Jane       06:00
200         Jane       09:00
399         Lisa       07:00
399         Lisa       13:00
500         Kane       10:00
500         Kane       12:10
500         Kane       13:50

现在我添加一个“min”过滤器并修改语法,如下所示:

SELECT t1.cardid, t1.Name, min(t2.record) As Record
FROM t2 INNER JOIN t1 on t1.tag=t2.tag GROUP BY t1.cardid, t1.name

结果变成这样:

cardid      name       record
100         Dan        09:00
200         Jane       06:00
399         Lisa       07:00
500         Kane       10:00

如何添加过滤器,以便只有每条记录的“最小值”超过;说“记录”列中出现“08:00”值。我想要的结果是这样的:

cardid      name       record
100         Dan        09:00
500         Kane       10:00

我正在使用 SQL。

4

1 回答 1

2
SELECT t1.cardid, t1.Name, min(t2.record) As Record
FROM t2 INNER JOIN t1 on t1.tag=t2.tag
GROUP BY t1.cardid, t1.name
having min(t2.record) >= cast('08:00' as time)

我想记录也是时间类型,你也可以使用convert('08:00', time)甚至尝试不使用转换/转换,它也可以工作,因为 mysql 可以自动转换

对于非常旧的 mysql,您可以尝试使用having 0+substring(t2.record, 1,2) >= 8

于 2013-10-23T02:00:53.897 回答