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 に答える