Mysql 左联接3个缺少某些字段的表(NULL)
我有一个包含3个表的数据库:company、address、contact,其中基本上分别包含了关于公司本身、地址和联系信息的一些数据。现在,并非所有公司都有地址信息和联系方式。我试图查询数据库,以显示所有公司的列表:表中包括公司名称、地址和联系电话。因此,我使用如下查询:Mysql 左联接3个缺少某些字段的表(NULL),mysql,sql,Mysql,Sql,我有一个包含3个表的数据库:company、address、contact,其中基本上分别包含了关于公司本身、地址和联系信息的一些数据。现在,并非所有公司都有地址信息和联系方式。我试图查询数据库,以显示所有公司的列表:表中包括公司名称、地址和联系电话。因此,我使用如下查询: SELECT company.inn, company.name, company.ceo, address.city, contact.phone FROM company JOIN address
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
工作很好,但它不会返回既没有地址也没有联系人或两者都没有的公司。然后我尝试发出一个left join命令:
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
ON
必须在JOIN
之后定义。你可以在这里阅读文档你怎么知道的?阅读提供的文档,那里有一些很好的例子@tnsaturday我的意思是你从上到下阅读,或者只是搜索特定的案例?对我来说,这似乎是压倒性的。你的意思是发现了错误吗?这对一些人来说是相当引人注目的。特别是对于使用它数千次或数百万次的人。如果它确实回答了您的问题,请不要忘记将其标记为答案:)非常感谢您以非常容易理解的方式快速回答问题!如果您有多个地址和联系人,则可能无法获得预期的结果。如果是这样,用样本数据和期望的结果问一个新问题。
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