如果其他列中的值更改,则mysql增量

如果其他列中的值更改,则mysql增量,mysql,Mysql,我有一个简单的mysql表,其中包含ColumsID自动递增、player、score、tournamentid和datetime,并带有触发器,可以根据时间进行更新 我想在数据库中添加一个列,如果在数据库中输入了新的tournamentid,则让我们调用此列DAY自动增加其值,但前提是此新tournamentid与上一个tournamentid之间的天数超过4天。如果少于4天,则应保留当前天数。如果之前没有tournamentid,那么它应该以1开头 这是因为有时候我们踢到很晚,如果我们周

我有一个简单的mysql表,其中包含ColumsID自动递增、player、score、tournamentid和datetime,并带有触发器,可以根据时间进行更新

我想在数据库中添加一个列,如果在数据库中输入了新的tournamentid,则让我们调用此列DAY自动增加其值,但前提是此新tournamentid与上一个tournamentid之间的天数超过4天。如果少于4天,则应保留当前天数。如果之前没有tournamentid,那么它应该以1开头

这是因为有时候我们踢到很晚,如果我们周六开始,周日早上结束,或者我们踢了整个周末,这仍然算是同一天

这可能吗

我还尝试使用SQL编码来实现这一点。我的想法是伪代码:

if days_between (day1 and day2) >3
then day1 = 1 and day2 = 2
else if days_between (day1 and day2) <3
then day1 = 1 and day2 = 1
我最终得到了一个可以工作的代码,但我认为这是一个糟糕的编码:

select tournamentid, CreatedTime , date(CreatedTime)

,CASE
# DAY1 and DAY2
WHEN datediff(
      (select distinct(DATE(CreatedTime)) from pokermax_scores as t2 order by tournamentid desc limit 1,1), #mar 11
      (select distinct(DATE(CreatedTime)) from pokermax_scores as t2 order by tournamentid desc limit 0,1)  #feb 11
             ) >3 #28 days so TRUE
      AND
      (select distinct(DATE(CreatedTime)) from pokermax_scores as t2 order by tournamentid desc limit 0,1)=DATE(CreatedTime)
THEN 'DAY1'
WHEN datediff(
      (select distinct(DATE(CreatedTime)) from pokermax_scores as t2 order by tournamentid desc limit 1,1), #mar 11
      (select distinct(DATE(CreatedTime)) from pokermax_scores as t2 order by tournamentid desc limit 0,1)  #feb 11
             ) >3 #28 days so TRUE
      AND
      (select distinct(DATE(CreatedTime)) from pokermax_scores as t2 order by tournamentid desc limit 1,1)=DATE(CreatedTime)
THEN 'DAY2'

WHEN datediff(
      (select distinct(DATE(CreatedTime)) from pokermax_scores as t2 order by tournamentid desc limit 1,1), #mar 11
      (select distinct(DATE(CreatedTime)) from pokermax_scores as t2 order by tournamentid desc limit 0,1)  #feb 11
             ) <3 #28 days so FALSE
      AND
      (select distinct(DATE(CreatedTime)) from pokermax_scores as t2 order by tournamentid desc limit 0,1)=DATE(CreatedTime)
THEN 'DAY1'
WHEN datediff(
      (select distinct(DATE(CreatedTime)) from pokermax_scores as t2 order by tournamentid desc limit 1,1), #mar 11
      (select distinct(DATE(CreatedTime)) from pokermax_scores as t2 order by tournamentid desc limit 0,1)  #feb 11
          ) <3 #28 DAYS so FALSE
      AND
      (select distinct(DATE(CreatedTime)) from pokermax_scores as t2 order by tournamentid desc limit 1,1)=DATE(CreatedTime)
THEN 'DAY2'
ELSE 'OTHER DAY'
END  as Avond
from pokermax_scores as t1

任何人都可能需要更多关于tournamentid来源的信息,以便为您提供可靠的答案或有用的建议。我最初的印象是,如果可能的话,数据库此时可能需要重新构造。您是否在使用类似PHP的东西?是的,这是一个PHP脚本,我在智能手机上运行。它插入锦标赛和球员,并更新分数。Tournamentid是一个变量,用于获取唯一的数字,因为您可能会注意到它只是完整的日期/时间。我想有一天,这样我就可以在每晚结束时计算平均分数,创建一个图表。