繁体   English   中英

在MySQL中使用动态SQL(带有查询结果的子查询)

[英]Using Dynamic SQL in MySQL (Sub-Query with Result of Query)

我不确定这是否可能,但是我知道是否可以,在这里我会找到答案的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。

任何帮助或指向正确方向的方向将不胜感激!

如果您的工作日是递增的,并且每天都有一行,那么您可以尝试使用DATE_SUB()加入该表,而不必试图依靠从增量ID中减去,由于行删除和其他问题,增量ID可能非常不可靠。或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'

子查询也很好

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM