为什么我的完整连接查询失败?

时间:2011-09-08 20:04:34

标签: mysql sql join

我有这个问题:

SELECT *, default_insurance.company AS company
FROM (default_insurance)
JOIN default_gruppe_rel
     ON default_gruppe_rel.uid = default_insurance.uid
JOIN default_profiles
     ON default_insurance.uid = default_profiles.id
WHERE `kontakt` = '1' 

现在我从中获得了一个结果集,但是如果我想得到没有连接匹配的结果,只想通过将第一个连接类型改为FULL来改变这个查询

SELECT *, default_insurance.company AS company
FROM (default_insurance)
FULL JOIN default_gruppe_rel
    ON default_gruppe_rel.uid = default_insurance.uid
JOIN default_profiles
    ON default_insurance.uid = default_profiles.id
WHERE `kontakt` = '1' 

我收到一条错误消息: 您的SQL语法有错误;查看与您的MySQL服务器版本对应的手册,以便在'FULL JOIN default_gruppe_rel ON default_gruppe_rel.uid = default_insurance.uid J'第1行附近使用正确的语法

为什么?是我的MYSQL版本未知的全部加入?它被弃用了吗?

3 个答案:

答案 0 :(得分:2)

MySQL不支持FULL JOINSee the MySQL docs了解用户评论中提供的一些解决方法。

答案 1 :(得分:0)

FULL JOIN仅适用于某些RDBMS ...尝试LEFT OUTER JOIN / LEFT JOIN以获取第一个表中的所有记录以及后续表中的所有匹配。

你也可以尝试一个CROSS JOIN,它不是真正的连接,而是返回'join'表的笛卡尔积(即所有可能的组合)。

答案 2 :(得分:0)

...LEFT JOIN...
UNION ALL
...RIGHT JOIN...