SELECT * FROM table while condition = true?

时间:2013-05-04 07:21:24

标签: mysql sql database mysqli

我希望在一个条件成立时从表中选择一些东西,

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 

这里我想计算每笔交易的总余额

1 个答案:

答案 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没有行的情况 - 在这种情况下,我们需要表中的所有行。