1

その時点で最後に記録された数量を返すために、特定の時点のクエリを実行しようとしています。

基本的に、私はそのようにフォーマットされたテーブルを持っています

id | other_id | quantity | created
 1     1           5       20
 2     1           2       22
 3     1           1       25
 4     1           8       90

クエリされた作成数が 60 の場合、作成された 25 以上の数量を返すか、クエリされた作成以降の最新の既知の数量から返します。

SELECT * FROM table
WHERE created >= 60
AND other_id = 1
ORDER BY ID ASC

これは ID:4 を返しますが、ID:3 である 60 で作成したいのですが、照会された作成が 25 だった場合、25 以上を返したいです。

脳はアトムで揚げられており、正しい解決策を思いつくことができません

4

2 に答える 2

1

このクエリは、必要な値の前に値を選択します。

SELECT MAX(created)
FROM yourtable
WHERE other_id = 1
AND created <= 60

これをメイン クエリ内のサブクエリとして使用できます。

SELECT *
FROM yourtable
WHERE created >=
(
    SELECT IFNULL(MAX(created), -1)
    FROM yourtable
    WHERE other_id = 1
    AND created <= 60
)
AND other_id = 1
ORDER BY ID ASC
于 2012-11-09T21:49:58.957 に答える
1
SELECT * FROM table
WHERE id >= (
  SELECT id FROM table WHERE created <= 60
  AND other_id = 1
  ORDER BY id DESC LIMIT 1
)
AND other_id = 1
ORDER BY id ASC
于 2012-11-09T21:51:43.513 に答える