1

1 つの日付フィールドを持つテーブルがあります

質問は: 今日の後に 10 個のレコードを選択し、今日の前に 10 個のレコードを選択する方法はありますか :)

もちろん、2 つのクエリを作成する代わりに

    SELECT xxxx FROM xxxx WHERE thedate >= 'date' ORDER BY thedate DESC LIMIT 10

 SELECT the same WHERE thedate < 'date' ORDER BY thedate ASC LIMIT 10

LIMIT が優先されます。ただのスピードだから。

日付フィールドのデータは予測できません。同じ日付のレコードが 1 つまたは 2 つ存在するか、日付のレコードが存在しない可能性があります。

4

3 に答える 3

0
  SELECT xxxx FROM xxxx WHERE thedate >= 'date' ORDER BY thedate DESC LIMIT 10
union all
SELECT xxxx FROM xxxx WHERE thedate < 'date' ORDER BY thedate ASC LIMIT 10
于 2012-10-11T10:30:33.287 に答える
0
SELECT xxxx FROM xxxx WHERE thedate > CURDATE() ORDER BY thedate DESC LIMIT 10
union
SELECTxxxx FROM xxxx WHERE thedate < CURDATE() ORDER BY thedate ASC LIMIT 10
于 2012-10-11T10:31:05.347 に答える
0

両方の日付を減算して、差を絶対にすることができます。

SELECT xxxx FROM xxxx ORDER BY ABS(UNIX_TIMESTAMP(thedate) - UNIX_TIMESTAMP('date'))

ただし、 UNIONを使用して 2 つのクエリを結合する方がはるかに簡単です。

SELECT ... UNION SELECT ...
于 2012-10-11T10:31:31.707 に答える