4

user_id特定の期間 (たとえば、24 時間)の最初と最後のレコードを取得しようとしています。

これは、次のようなことを行い、ORDER BY ASC/を切り替える 2 つのクエリを使用して実行できることを認識していDESCます。

SELECT id, user_id, date, other_columns
FROM table
WHERE user_id = 1 AND date > DATE_SUB(CURDATE(), INTERVAL 24 HOUR)
ORDER BY date DESC
LIMIT 1

ただし、これを 1 つのクエリで実行できるかどうかは疑問です。

4

1 に答える 1

3

これはあなたが考えることができるものです:

SELECT t.id, t.user_id, t.date, t.other_columns
FROM table t
WHERE user_id = 1
    AND date = (
        SELECT MIN(date)
        FROM table
        WHERE user_id = t.user_id
            AND date > DATE_SUB(CURDATE(), INTERVAL 24 HOUR))
UNION ALL
SELECT id, user_id, date, other_columns
FROM table
WHERE user_id = 1
    AND date = (
        SELECT MAX(date)
        FROM table
        WHERE user_id = t.user_id
            AND date > DATE_SUB(CURDATE(), INTERVAL 24 HOUR))
于 2013-07-29T12:00:44.097 に答える