0

これが可能かどうかはわかりませんが、可能かどうかはわかります。stackoverflow コミュニティで答えを見つけることができます。基本的に、アプリケーションを高速化できるように、いくつかのデータを前処理しようとしています。これが私がやろうとしていることの例です:

SELECT id 
FROM data AS data1 
WHERE rangeVal < (SELECT rangeVal FROM data WHERE id = data1.id - 1)
AND actiondate >= '1980-05-18' 
AND actiondate <= '2012-05-18'
ORDER BY actiondate DESC

基本的に、次の日から rangeVal が rangeVal より小さい場合にのみ、データの ID を取得しようとしています。

正しい方向への助けやポイントは大歓迎です!!

4

2 に答える 2

1

日が増分で、毎日行がある場合は、行の削除やその他の問題のために信頼性が非常に低い可能性がある増分IDからの減算に依存するのではなく、DATE_SUB()またはDATE_ADD()を使用してテーブルに対して結合できます。参加条件:

SELECT 
  id
FROM 
  data data_today
  /* JOIN on a date manipulation */
  JOIN data data_tomorrow ON DATE_ADD(data_today.actiondate, INTERVAL 1 DAY) = data_tomorrow.action_date
WHERE 
  data_today.rangeVal < data_tomorrow.rangeval
  AND data_today.actiondate BETWEEN '1980-05-18' AND '2012-05-18'
于 2012-06-19T12:34:22.123 に答える
0

サブクエリもOK

SELECT id 
FROM data AS data1 
WHERE rangeVal < 
    (
     SELECT rangeVal FROM data d2 WHERE d2.id = data1.id  AND d2.actiondate= 
     DATE_ADD(d2.action_date, INTERVAL 1 DAY)
    )
AND actiondate BETWEEN '1980-05-18' AND '2012-05-18'
ORDER BY actiondate DESC
于 2012-06-19T12:40:31.213 に答える