我需要检查(从同一张表中)两个事件之间是否存在基于日期时间的关联。
一组数据将包含某些事件的结束日期时间,另一组数据将包含其他事件的开始日期时间。
如果第一个事件在第二个事件之前完成,那么我想将它们链接起来。
到目前为止,我所拥有的是:
SELECT name as name_A, date-time as end_DTS, id as id_A FROM tableA WHERE criteria = 1 SELECT name as name_B, date-time as start_DTS, id as id_B FROM tableA WHERE criteria = 2
然后我加入他们:
SELECT name_A, name_B, id_A, id_B, if(start_DTS > end_DTS,'VALID','') as validation_check FROM tableA LEFT JOIN tableB ON name_A = name_B
然后,我可以根据我的 validation_check 字段运行一个嵌套了 SELECT 的 UPDATE 查询吗?
您实际上可以通过以下两种方式之一执行此操作:
MySQL 更新连接语法:
UPDATE tableA a INNER JOIN tableB b ON a.name_a = b.name_b SET validation_check = if(start_dts > end_dts, 'VALID', '') -- where clause can go here
ANSI SQL 语法:
UPDATE tableA SET validation_check = (SELECT if(start_DTS > end_DTS, 'VALID', '') AS validation_check FROM tableA INNER JOIN tableB ON name_A = name_B WHERE id_A = tableA.id_A)
选择对你来说最自然的一个。