MySQL join 有 2 个条件错误

Posted

技术标签:

【中文标题】MySQL join 有 2 个条件错误【英文标题】:MySQL join with 2 conditions error 【发布时间】:2013-11-20 09:22:36 【问题描述】:

我无法弄清楚为什么下面的 mysql 语句(在 php 文件中)会出现 SQL 错误。我认为问题与第二个条件“AGREEDPRODUCTS.productid_corporation 为空”有关。我检查了所用参数的语法是否与数据库中使用的一样正确。对于第二个条件,我还尝试了其他替代方案(例如使用 WHERE,但显然不允许这样做;MySQL join with where clause),但这些都不起作用。

$sqlquery4 = "SELECT AGREEDPRODUCTS.id,AGREEDPRODUCTS.productid_supplier,EMETERPRODUCTS.productname "
                . "FROM AGREEDPRODUCTS "
                . "INNER JOIN EMETERPRODUCTS "    
                . "ON AGREEDPRODUCTS.productid_supplier=EMETERPRODUCTS.productid AGREEDPRODUCTS.producttype='EMETER' AND AGREEDPRODUCTS.productid_corporation is null "
                . "ORDER BY AGREEDPRODUCTS.productid_supplier";

有什么建议吗?

【问题讨论】:

【参考方案1】:

您在该行错过了AND 或其他分隔符:

ON AGREEDPRODUCTS.productid_supplier=EMETERPRODUCTS.productid AGREEDPRODUCTS.producttype='EMETER' AND AGREEDPRODUCTS.productid_corporation is null
                                                            ^^^

【讨论】:

thnx(两者)。感觉很厚,我忽略了这一点;-(【参考方案2】:
ON AGREEDPRODUCTS.productid_supplier=EMETERPRODUCTS.productid AND AGREEDPRODUCTS.producttype='EMETER' AND AGREEDPRODUCTS.productid_corporation is null

您缺少AND....................... ..................................................^在这里^.

你在这里混淆了一些东西:

喜欢使用 WHERE,但这显然是不允许的

这个问题中的 WHERE 使左/右连接成为内部连接。这就是为什么你必须把它放在加入条件中。 WHERE 子句总是可以的。您也可以将第二个连接条件放在 where 子句中。

【讨论】:

以上是关于MySQL join 有 2 个条件错误的主要内容,如果未能解决你的问题,请参考以下文章

mysql left join中where和on条件的区别

mysql关联left join条件on和where条件的区别及结合coalesce函数

MySQL 中的条件 JOIN 语句

MySQL # left join 语句,对右表的限制条件使用注意问题

有这个 mysql 查询我希望使用多个条件总和。当我在同一行中使用 2 个 where 时,它​​显示一个错误

MySQL:JOIN 和条件语句