Mysql 在内部联接之后更新

Mysql 在内部联接之后更新,mysql,group-by,Mysql,Group By,我有以下表格: 表1: id name race_type start_time end_time --- ---- --------- ---------- -------- 111 Phelps Relay 2016-08-20 00:01:00 NULL 111 Phelps Relay NULL 20

我有以下表格:

表1:

id   name    race_type        start_time              end_time
---  ----    ---------        ----------              --------
111  Phelps   Relay       2016-08-20 00:01:00           NULL
111  Phelps   Relay             NULL             2016-08-20 00:02:00
333  Lochte  Butterfly    2016-08-20 00:05:00           NULL
333  Lochte  Butterfly          NULL             2016-08-20 00:06:00
表2:

name      race_type        current_time       qualifies
----      ---------        ------------       ---------
Phelps      Relay       2016-08-20 00:03:30    
Lochte    Butterfly     2016-08-20 00:05:30
我使用以下查询来确定表2中两个事务的当前\u时间是否在表1记录的开始\u时间和结束\u时间内(关于每个唯一的ID配对、名称和种族类型)

SELECT * FROM (
SELECT id,name,race_type, MIN(start_time) AS start_time, MAX(end_time) AS end_time
FROM Table1
GROUP BY id
) AS results INNER JOIN table2 ON 
  results.name = Table2.name 
  AND results.type = Table2.type 
  AND Table2.current_time BETWEEN results.start_time AND results.end_time;
如何修改此查询以更新Table2.qualifies参数,根据Table2中的两个事务是否返回结果,将其设置为true或false

修改后的表2应如下所示:

name      race_type        current_time       qualifies
----      ---------        ------------       ---------
Phelps      Relay       2016-08-20 00:03:30       0    
Lochte    Butterfly     2016-08-20 00:05:30       1

我猜我需要添加一个更新,并在某处存在?

如果您以编程方式插入/更新记录,则应修改数据库结构,并按以下方式执行:

表1:

id   name    race_type     start_time           end_time   current_time   qualifies
---  ----    ---------     ----------           --------    ----------      ----
111  Phelps   Relay       2016-08-20 00:01:00     NULL        NULL          null
以上将是起点(第一次插入记录时)

然后,在代码中获得
current time
值后,启动更新查询并更新此记录(ID111)current_time列的值

然后使用
WHERE
BETWEEN
子句触发select查询,并根据您的条件,update也限定列值


注意:由于评论部分的字符限制,我将此作为答案发布。所以请不要投反对票。此外,此答案还显示了构造数据库的正确且更好的方法。

修改数据库不是一个选项。一些有助于回答原始问题的建议会很好,没有填满有价值的答案空间。@sumitbadaya看起来问题已经被回答了——从OPYes的角度来看这有点不幸。问题已经被回答了,但是@user3567212瞎到可以看到它,并且选择了一种非常糟糕的编码方式。嗯,我很同情他手下的项目。英雄联盟