我有几个看起来像这样的桌子。
table_a | table_b
-------------------------
prim_key | prim_key
zero_or_one | value1
valueA | value2
valueB | value3
valueZ |
我希望做的是从prim_key
检索所有值(value1
,value2
,value3
,TABLE B
)(如果主要每个表的键都匹配,并且zero_or_one
中TABLE A
的值为0
。
我是joins
的新手,我不确定我应该为此使用哪个连接,但是似乎FULL OUTER JOIN
最合适。
SELECT table_b.*
FROM table_a
FULL OUTER JOIN table_b
ON table_a.prim_key = table_b.prim_key
这有可能吗?
我是否为此工作使用了正确的联接?
我的“全选”语法正确吗?
答案 0 :(得分:2)
因为只有在table_b
中找到匹配的主键,您才希望从table_a
中输入条目;在这种情况下,一个简单的Inner Join
就足够了
SELECT table_b.*
FROM table_b
INNER JOIN table_a
ON table_a.prim_key = table_b.prim_key AND
table_a.zero_or_one = 0
答案 1 :(得分:2)
这个答案并不意味着一个真正的答案,而是意味着如何在MySQL中模拟FULL OUTER JOIN。
MySQL不支持FULL OUTER JOIN,您可以使用LEFT JOIN,UNION ALL和RIGHT JOIN模拟它
SELECT * FROM table_a LEFT JOIN table_b ON table_a.prim_key = table_b.prim_key
UNION ALL
SELECT * FROM table_a RIGHT JOIN table_b ON table_a.prim_key = table_b.prim_key
WHERE table_a.prim_key IS NULL