在mysql中,INNER JOIN 中的 ON 语句可以接受 OR 子句吗?

In mysql, can ON statement in an INNER JOIN accept an OR clause?

INNER JOIN 的 ON 子句可以接受 AND 吗?

在以下(目前正在工作)mysql示例中:

SELECT p.pk_ProductID
FROM Product p
INNER JOIN SerialNumber sn
    
ON sn.fk_ProductID = p.pk_ProductID
    
WHERE sn.pk_SerialNumberID = %s AND p.ProductGUID = %s
    
LIMIT 1

用 sn.fk_ProductID2 添加 OR 子句是否合法:

ON sn.fk_ProductID = p.pk_ProductID OR sn.fk_ProductID2 = p.pk_ProductID

如果合法,文体上在括号中是否更具可读性:

ON (sn.fk_ProductID = p.pk_ProductID) OR (sn.fk_ProductID2 = p.pk_ProductID)

注意:我在 SO 上回顾了几个看似相似的问题,其中包含关于我问题第 1 部分的相互矛盾的建议。

像您展示的那样编写查询是合法的。 ON 关键字后面的表达式可以是任何布尔表达式。严格来说,它甚至不必引用您要加入的 table。

没有必要使用括号,因为 =OR 的运算符优先级显然 = 绑定得更紧。有关详细信息,请参阅 https://dev.mysql.com/doc/refman/8.0/en/operator-precedence.html