我希望在一个条件成立时从表中选择一些东西,
SELECT * FROM (SELECT * FROM`table1` `t1` ORDER BY t1.date) `t2` WHILE t2.id!=5
当while condition
出现错误时,它会停止选择下一行。
请帮助我,我已经在stackoverflow
搜索了很多很多类似物,但我无法得到它。
请不要告诉我有关where
的信息,我希望sql中的解决方案不在php或其他任何内容中
确定真正的问题在这里
SELECT *,(SELECT SUM(t2.amount) FROM (select * from transaction as t1 order by t1.date) `t2`) as total_per_transition FROM transaction
这里我想计算每笔交易的总余额
答案 0 :(得分:2)
首先找到条件失败的第一个日期,所以id=5
:
SELECT date
FROM table1
WHERE id = 5
ORDER BY date
LIMIT 1
然后将上面的派生表(我们称之为lim
)并将其连接到原始表以获取具有先前日期的所有行:t.date < lim.date
SELECT t.*
FROM table1 AS t
JOIN
( SELECT date
FROM table1
WHERE id = 5
ORDER BY date
LIMIT 1
) AS lim
ON t.date < COALESCE(lim.date, '9999-12-31') ;
COALESCE()
适用于id=5
没有行的情况 - 在这种情况下,我们需要表中的所有行。