0

、、、、およびの4つのformstatus列を持つMySQLテーブル(と呼ばれる)があり、主キーとして、およびが一緒に一意です。ごとに2番目に新しいタイムスタンプを持つ行のセット(特に)を取得したいと思います。私は試したidformstatustimestampidformstatusstatusform

SELECT form, status FROM (
  SELECT form, status, timestamp
  FROM formstatus
  WHERE timestamp < max(timestamp)
  GROUP BY form) as a
WHERE timestamp = max(timestamp)
GROUP BY form

しかし、where句で集計が許可されていないため、機能しませんでした。それで、私が探している情報を返すクエリはありますか?

4

2 に答える 2

3

このクエリを試してください -

SELECT
  t1.*, COUNT(*) pos
FROM formstatus t1
  LEFT JOIN formstatus t2
    ON t2.form = t1.form AND t2.timestamp >= t1.timestamp
GROUP BY
  t1.form, t1.timestamp
HAVING
  pos = 2;
于 2012-05-23T15:04:53.230 に答える
0

WHERE句で集計を使用できないため、エラーが生成されます。条件をHAVING句に移動してみてください。

GROUP BY form
HAVING timestamp < max(timestamp)
于 2012-05-23T15:02:51.757 に答える