我需要检查(从同一个表中)两个事件之间是否存在基于日期-时间的关联。
一组数据将包含某些事件的结束日期-时间,另一组数据将包含其他事件的开始日期-时间。
如果第一个事件在第二个事件之前完成,那么我想把它们联系起来。
到目前为止,我有:
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查询吗?
我有一个重复的条目在一个表本身的问题。以下是对我有效的方法。@sibaz也提倡这样做。
最后我用下面的查询解决了这个问题:
The select query is saved in a temp table
IF OBJECT_ID(N'tempdb..#New_format_donor_temp', N'U') IS NOT NULL
DROP TABLE #New_format_donor_temp;
select *
into #New_format_donor_temp
from DONOR_EMPLOYMENTS
where DONOR_ID IN (
1, 2
)
-- Test New_format_donor_temp
-- SELECT *
-- FROM #New_format_donor_temp;
The temp table is joined in the update query.
UPDATE de
SET STATUS_CD=de_new.STATUS_CD, STATUS_REASON_CD=de_new.STATUS_REASON_CD, TYPE_CD=de_new.TYPE_CD
FROM DONOR_EMPLOYMENTS AS de
INNER JOIN #New_format_donor_temp AS de_new ON de_new.EMP_NO = de.EMP_NO
WHERE
de.DONOR_ID IN (
3, 4
)
我不是很有经验的SQL请建议任何更好的方法你知道。
以上查询是针对MySql服务器的。