我正在使用下面的查询,根据一些日期之间的数据来选择上一只股票,但是如果自动增加的id不是顺序的(当删除一些记录时,它有间隙),下面的查询就会失败。
SELECT in_stock, price
FROM $tablename
WHERE id=(SELECT (id-1)
FROM $tablename
WHERE sale_date BETWEEN '$from_date' AND '$to_date'
ORDER BY entered_date ASC
LIMIT 1)帮我选择上一个in_stock
发布于 2014-04-19 16:07:04
如果ID不是按顺序排列的,您应该使用类似以下内容:
SELECT in_stock, price
FROM $tablename
WHERE entered_date=(
SELECT MAX(entered_date) as max_date
FROM $tablename
WHERE
entered_date<(SELECT MIN(entered_date) as min_date
FROM $tablename
WHERE
sale_date BETWEEN '$from_date' AND '$to_date')
)发布于 2014-04-19 17:33:59
这行得通,
SELECT in_stock, price
FROM $tablename
WHERE id < (SELECT min(id)
FROM $tablename
WHERE sale_date BETWEEN '$from_date' AND '$to_date') ORDER BY id DESC LIMIT 1发布于 2014-04-19 17:05:28
尝尝这个
SELECT in_stock, price
FROM $tablename
WHERE id=(SELECT (SELECT MAX(id)
FROM $tablename
WHERE id < ( SELECT MAX(id)
FROM $tablename ))
FROM $tablename
WHERE sale_date BETWEEN '$from_date' AND '$to_date'
ORDER BY entered_date ASC
LIMIT 1)https://stackoverflow.com/questions/23167257
复制相似问题