我有这个问题:
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版本未知的全部加入?它被弃用了吗?
答案 0 :(得分:2)
MySQL不支持FULL JOIN
。 See the MySQL docs了解用户评论中提供的一些解决方法。
答案 1 :(得分:0)
FULL JOIN仅适用于某些RDBMS ...尝试LEFT OUTER JOIN / LEFT JOIN以获取第一个表中的所有记录以及后续表中的所有匹配。
你也可以尝试一个CROSS JOIN,它不是真正的连接,而是返回'join'表的笛卡尔积(即所有可能的组合)。
答案 2 :(得分:0)
...LEFT JOIN...
UNION ALL
...RIGHT JOIN...