我在一个过程中的游标中使用了下面的SELECT语句。
SET @chng = ( SELECT Tcle - cls
FROM dly
WHERE dt = SUBDATE(Tdt, INTERVAL 1 DAY);
AND dly.nms_id = Tnms_id);
Tdt
为当前记录的日期。
问题是我的表中的记录没有连续的日期。因此,记录将有日期'11-01-2010'
,然后'12-01-2010'
,然后'15-01-2010
',由于周末之间。
这就是我的SELECT
语句有缺陷的地方,好像它在'15-01-2010
'上运行为Tdt
,然后:
WHERE dt = '14-01-2010'
但是我想让它选择以前的记录日期:
WHERE dt = '12-01-2010'
那么有一种方法来选择以前的记录日期吗?
在这种情况下,我将取日期早于指定日期的所有行,按日期列降序排序,然后只取最后一行,如下所示(对当前语句的必要更改突出显示):
SET @chng = ( SELECT Tcle - cls
FROM dly
WHERE dt < Tdt
AND dly.nms_id = Tnms_id
ORDER BY dt DESC
LIMIT 1);
使用下面的查询
SELECT MAX(cls)从海底WHERE t <负2和海底。nms_id>