我在表格中有以下行。
MatchIDAuto CompetitionIDAuto TeamHome TeamAway MatchDate
4770 65 New Zealand South Africa 2017-02-19
4771 65 New Zealand South Africa 2017-02-21
4772 65 New Zealand South Africa 2017-02-25
4773 65 New Zealand South Africa 2017-03-01
4774 65 New Zealand South Africa 2017-03-04
我需要做的是当我执行以下操作时:
select * from Match2 where MatchIDAuto=4772
知道这是该系列赛的第3场比赛。我怎么能用查询动态计算呢?
答案 0 :(得分:0)
如果没有ORDER BY
子句,则无法保证标识为4772
的行是系列中的第三行。这是因为没有order by子句的数据库可能会相应地执行不同的命令执行计划。
所以要做的第一件事就是在查询中添加order by子句。根据数据,我可以选择MatchIDAuto
或MatchDate
。 MySql中的查询将为您提供行的订单号:
select *
from (
select m.*,
@ord:=@ord+1 roworder
from Match2 m,
(select @ord:=0) t
ORDER BY MatchDate
) sub
where MatchIDAuto=4772;
这将返回每个列加roworder
的订单3.在此查询中,我选择MatchDate
字段,因为对我而言,您的数据更适合作为订单的列。
此技术将创建一个变量并将其汇总到每一行。您只需将其包装在子查询中并进行查询即可。