0

次のような最大の日付値を持つテーブルからこれらのデータを選択したとしましょう。

SELECT * FROM  table_name WHERE column_name IN  (SELECT  MIN(column_name) FROM table_name

正常に動作し、「最新の」日付値を持つデータを選択します。

次の降順の日付を持つデータをリストするためのクエリがMySQLにあるかどうかを知りたいです。たとえば、最初の選択では、次のようなMIN日付値を持つ行を選択しました。2012-08-2710:15:00日付値が次に最も近いデータを選択するために、別のクエリで必要なものこのような値:2012-08-28 11:45:00

したがって、日付の値が大きいまたは小さい他の行がありますが、それらを選択したくありません。私が現在行っているものから、最も近い次のものだけ。

4

1 に答える 1

0

最も近い次の要素を検索する日時の値がある場合( comparation_dateという名前を付けましょ う)、次のように試すことができます。

SELECT * FROM  table_name WHERE column_name IN  (SELECT  MIN(column_name) FROM table_name WHERE column_name > comparison_date ORDER BY column_name)

これにより、その日付より後のすべての日時値が返されます。単一の結果に制限する場合は、次を使用する必要があります。

SELECT * FROM  table_name WHERE column_name IN  (SELECT  MIN(column_name) FROM table_name WHERE column_name > comparison_date ORDER BY column_name) LIMIT 1

または、現在の時刻から次に近い日時が必要な場合は、comparation_dateをMySQL関数であるNOW()に置き換えること できます次に、次のようなことを試すことができます。

SELECT * FROM  table_name WHERE column_name IN  (SELECT  MIN(column_name) FROM table_name WHERE column_name > NOW() ORDER BY column_name)

次に低い日時(または前の日時、ただし、これを呼び出します)を見つけるには、次を使用する必要があります。

SELECT * FROM  table_name WHERE column_name IN  (SELECT  MIN(column_name) FROM table_name WHERE column_name < comparison_date ORDER BY column_name DESC) LIMIT 1
于 2012-10-26T08:36:33.330 に答える