我有一个包含 3 个表的数据库:公司、地址、联系人,其中基本上包含有关公司本身的一些数据及其地址和联系信息。现在,并非所有公司都有地址信息和联系信息。我正在尝试查询数据库以显示所有公司的列表:表格包括公司名称、地址和联系电话。所以我使用这样的查询:
SELECT company.inn, company.name, company.ceo, address.city, contact.phone
FROM company
JOIN address
JOIN contact
ON company.id = address.company_id AND company.id = contact.company_id
效果很好,但它不会返回没有地址或联系方式或两者都没有的公司。所以我然后尝试发出左连接命令:
SELECT company.inn, company.name, company.ceo, address.city, contact.phone
FROM company
LEFT JOIN address
LEFT JOIN contact
ON company.id = address.company_id AND company.id = contact.company_id
我得到这个错误:
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '' at line 1
最佳答案
SELECT company.inn, company.name, company.ceo, address.city, contact.phone
FROM company
LEFT JOIN address
ON company.id = address.company_id
LEFT JOIN contact
ON company.id = contact.company_id
ON
必须在 JOIN
之后定义。您可以在此处阅读文档 https://dev.mysql.com/doc/en/join.html
关于mysql - LEFT JOIN 3 个表缺少某些字段 (NULL),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54383624/