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()orDATE_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

子查询也可以

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 回答