mysql - LEFT JOIN 3 个表缺少某些字段 (NULL)

标签 mysql sql

我有一个包含 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/

相关文章:

php - 使用覆盖旧值的新复选框值更新表

mySql 过程条件未发生

php - 无法创建具有空登录名的用户

php - MySQL 计算多列

SQL - 根据列值选择行

mysql - 确保表格单元格中的值最多出现 "n"次。 DBMS 端方法

mysql - Laravel 4 工匠迁移安装

mysql - 使用 Rose::DB::Object 和 MySQL 设置 NULL 日期时间

mysql - 使用另一个数据库表中的数据更新(填充)SQL 表列

MySQL 在 OS X El Capitan 10.11.3 上突然停止启动