如果我有这样的表:区分空和Postgres的空连接查询
t1:
id | name
----+------
1 | a
2 | b
3 | c
4 | d
t2:
id | value
----+-------
10 | xxx
20 | yyy
30 | zzz
t_join:
t1_id | t2_id
-------+-------
1 | 10
2 | 20
3 | 30
为t1.id = 1 SELECT查询看起来像:
SELECT t1.id, t1.name, t2.value FROM t1, t2,t_join WHERE t1.id=t_join.t1_id AND t2.id=t_join.t2_id AND t1.id=1;
当然回报和:
id | name | value
----+------+-------
1 | a | xxx
如果我用id=4
做同样的事情,我什么也得不到。
SELECT t1.id, t1.name, t2.value FROM t1, t2,t_join WHERE t1.id=t_join.t1_id AND t2.id=t_join.t2_id AND t1.id=4;
id | name | value
----+------+-------
(0 rows)
而且,如果我做同样的事情用废话id=1234132
,我还什么都没得到。
SELECT t1.id, t1.name, t2.value FROM t1, t2,t_join WHERE t1.id=t_join.t1_id AND t2.id=t_join.t2_id AND t1.id=1234132;
id | name | value
----+------+-------
(0 rows)
有没有一种方法可以让我有一个空的结果(id=4
)VS东西是空(id=1234132
)区分?我想我想验证我检查的ID是否存在,没有单独的查询。这可能吗?
你是否尝试过使用表t1的'OUTER JOIN'?这将返回t1中的所有记录 – Pons