我有 table1
包含以下列: t1_id
(主键,自动递增) row_1
row_2 open_1
可以是0或1。
我有 table2
包含以下列: t1_id
(外键) table1.t1_id
) row_1
可以是0或1
其他栏目
生成表时,如果没有为 table2
那么 table1.open_1
= 1.
因此,如果open_1为1,则不存在具有相同属性的行 t1_id
输入 table2
,否则中有1行或多行 table2
同样的 t1_id
.
我想找回 table1.row_1, table1.row_2
如果其中一个是真的: open_1
为1,或 table2.row_1
是1
我试过这个:
SELECT table1.row_1, table1.row_2
FROM table1
JOIN table2
ON table1.t1_id = table2.t1_id
WHERE table1.open_1 = 1
OR table2.row_1 = 1
但它不会返回结果 open_1
是1。
我想是因为 open_1
=1,中没有关联的行 table2
,因此join子句不检索任何行。
如果我做两个查询,我就可以很容易地完成(首先检索open\u 1为1的行,然后检索open\u 1为1的行) table1.t1_id
= table2.t1_id
),但我想在1个查询中完成。
我可以用一个查询来完成吗?
数据:
表1:
t1_id row_1 row_2 open_1
1 5 3 1 <---- open_1 = 1, so retrieve this
2 4 7 0
3 6 2 0
4 8 1 0
5 9 7 0
表2:
t1_id row_1 row_2 row_3
2 0 3 4
2 1 2 5 <--- row_1 is 1
2 1 4 2
3 0 3 4
3 1 2 5 <--- row_1 is 1
4 0 4 2
5 0 3 4
所以在 table1
, open_1
第一行是1,所以我要检索该行,并且 open_1
对于第2-5行为0,因此我只希望在中有匹配行时检索这些结果 table2
有 row_1
= 1.
所以我想检索3个结果:
row_1 row_2
5 3
4 7
6 2
我的问题是无法检索第一行(其中open_=1),因为第二个表中没有相应的行。所以我想要一种方法来添加这一行,如果open_1=1,不管连接是什么
3条答案
按热度按时间jtjikinw1#
可以使用union子句:
whlutmcx2#
使用左连接
13z8s7eq3#
你需要一个左连接