您好,
我有一个查询在左连接中使用相同的表两次不等式,但它不会产生任何记录,即使我使用左连接。我使用MS Access 2013.
代码是:
SELECT DCT01A.*,
DCT01B.*
FROM utb_DCT_01_DailyConversionTrends AS DCT01A
LEFT JOIN utb_DCT_01_DailyConversionTrends AS DCT01B
ON DCT01A.[Hour] = DCT01B.[Hour]
AND DCT01A.[WeekDay] = DCT01B.[WeekDay]
AND DCT01A.[Specification] = DCT01B.[Specification]
AND INT(DCT01A.[Date]) > INT(DCT01B.[Date])
我期待(此时,虽然这会在以后发生变化)内部联接会导致没有记录产生。这是因为这只是测试数据,日期只有两天。
小时和周日是指当天的当前小时和当周的星期数。规格是一个ID。日期是该日期,包括时间。
此查询的目标是在同一工作日和小时查找所有以前的数据,而不再选择当前记录(因此存在不等式)。
我意识到我可以简单地将不等式作为> =来运行,然后删除=记录。所以我确实有一个简单的解决方法,我无法理解为什么它在上面写的时候不会起作用。
谢谢大家的关注。
答案 0 :(得分:0)
这对你有用吗?
SELECT * FROM
(
SELECT DCT01A.*,
DCT01B.*
FROM utb_DCT_01_DailyConversionTrends AS DCT01A
LEFT JOIN utb_DCT_01_DailyConversionTrends AS DCT01B
ON DCT01A.[Hour] = DCT01B.[Hour]
AND DCT01A.[WeekDay] = DCT01B.[WeekDay]
AND DCT01A.[Specification] = DCT01B.[Specification]
AND INT(DCT01A.[Date]) >= INT(DCT01B.[Date])
)
WHERE
DCT01A.[Date] <> DCT01B.[Date]
最亲切的问候..