我想在一个条件为真时从表中选择某项,
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
这里我想计算每笔交易的总余额
首先找到条件失败的第一个日期,所以在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
根本没有行的情况,在这种情况下,我们希望表中的所有行。