我有两个表t1和t2具有相同的结构
id INT
userid INT
date DATETIME
第一个表包含我的数据,而第二个表是一种帮助表,其中包含10个修复日期的行和userid = -1 我需要的是一个SELECT,它给我所有来自t1的行,其中userid = X连接(合并)来自t2的所有行,该日期不在t1的结果中。
伪代码
SELECT id, date
FROM t1, t2
WHERE (t1.userid=:id OR t2.userid=-1) AND t2.date NOT IN t1.date
样品:
T1:
id userid date
1 1 2015-12-01
2 1 2015-12-02
3 1 2015-12-03
4 2 2015-12-01
5 2 2015-12-02
T2:
id userid date
1 -1 2015-12-01
2 -1 2015-12-02
3 -1 2015-12-03
4 -1 2015-12-04
5 -1 2015-12-05
userid = 1的预期输出:
1 1 2015-12-01
2 1 2015-12-02
3 1 2015-12-03
4 -1 2015-12-04
5 -1 2015-12-05
感谢您的帮助
答案 0 :(得分:1)
我将使用联合选择来执行此操作。
SELECT
id, date
FROM
t1
WHERE
t1.id=:id
UNION ALL
(SELECT
id, date
FROM
t2
WHERE
t2.id=-1
AND t2.date NOT IN (SELECT date FROM t1 WHERE t1.userid=:id))