这可能加入吗?
Is This Join Possible?
我有几个 table 看起来像这样。
table_a | table_b
-------------------------
prim_key | prim_key
zero_or_one | value1
valueA | value2
valueB | value3
valueZ |
我希望做的是从 TABLE B
中检索所有值(prim_key
、value1
、value2
、value3
)如果每个 table 匹配的主键和 TABLE A
中 zero_or_one
的值是 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
这可能吗?
我是否使用了正确的联接方式?
我的 "select all" 语法正确吗?
因为只有当在 table_a
中找到匹配的主键时,您才需要来自 table_b
的条目;在这种情况下,一个简单的 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
这个答案并不意味着真正的答案,而是意味着如何在 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
我有几个 table 看起来像这样。
table_a | table_b
-------------------------
prim_key | prim_key
zero_or_one | value1
valueA | value2
valueB | value3
valueZ |
我希望做的是从 TABLE B
中检索所有值(prim_key
、value1
、value2
、value3
)如果每个 table 匹配的主键和 TABLE A
中 zero_or_one
的值是 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
这可能吗?
我是否使用了正确的联接方式?
我的 "select all" 语法正确吗?
因为只有当在 table_a
中找到匹配的主键时,您才需要来自 table_b
的条目;在这种情况下,一个简单的 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
这个答案并不意味着真正的答案,而是意味着如何在 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