在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。
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。