我有以下表格:
表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中两个事务的CURRENT_TIME是否属于Table1记录的START_TIME和END_TIME,与每个唯一ID配对,名称和race_type有关。
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;
如何根据表2中的两个事务是否返回结果,修改此查询以将Table2.qualifies参数更新为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
我猜我需要在某处添加UPDATE吗?
答案 0 :(得分:0)
如果以编程方式插入/更新记录,则应修改数据库结构并按以下方式执行:
表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
值后,触发更新查询并更新此记录(id 111)current_time列的值。
然后使用WHERE
和BETWEEN
子句触发选择查询,根据您的条件,更新也会限定列值。
注意:由于评论部分中的字符限制,我将此作为答案发布。所以,请不要downvote。此外,这个答案也显示了构建数据库的正确和更好的方法。