如果我有一个表 t1 看起来这个,其中记录在项目、大小和日期的组合上是唯一的;
item size date
1234 S 2013-02-11
1234 M 2013-02-11
1234 L 2013-02-11
9999 S 2013-02-11
9999 M 2013-02-11
9999 L 2013-02-11
1234 S 2013-02-13
1234 M 2013-02-13
1234 L 2013-02-13
9999 S 2013-02-13
9999 M 2013-02-13
与 2013 年 2 月 11 日相比,我如何检索 2013 年 2 月 13 日缺少的商品和尺寸?
我正在寻找的回报是,
item size
9999 L
我努力了;
SELECT ta.item,
ta.size
FROM t1 ta
LEFT JOIN t1 tb
ON ta.item = tb.item
AND ta.size = tb.size
WHERE ta.date = '2013-02-11'
AND tb.date = '2013-02-13'
AND tb.size IS NULL
和
SELECT item, size
FROM t1
WHERE t1.date = '2013-02-11'
AND NOT EXISTS (
SELECT item, size
FROM t1
WHERE t1.date = '2013-02-13'
)
两者都返回空集。
我设法让它工作的唯一方法是使用临时表;
CREATE temporary table temp1
SELECT * FROM t1 WHERE date = '2013-02-11';
CREATE temporary table temp2
SELECT * FROM t1 WHERE date = '2013-02-13';
SELECT temp1.item, temp1.size FROM temp1
LEFT JOIN temp2
ON temp1.item = temp2.item AND temp1.size = temp2.size
WHERE temp2.size IS NULL
临时表是不可能的。在不使用临时表的情况下如何实现这一点?
非常感谢,
(请温柔,我才刚刚开始!)