【发布时间】:2017-03-27 23:14:39
【问题描述】:
如果我有这样的表格:
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) 和空结果 (id=1234132)?我想我想验证我正在检查的 id 是否存在而无需单独的查询。这可能吗?
【问题讨论】:
-
你试过
OUTER JOIN和表 t1 吗?这将返回 t1 中的所有记录
标签: sql database postgresql join postgresql-9.4