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 部分相沖突的建議。
uj5u.com熱心網友回復:
像您展示的那樣撰寫查詢是合法的。關鍵字后面的運算式ON可以是任何布爾運算式。嚴格來說,它甚至不必參考您要加入的任何一個表。
沒有必要使用括號,因為=vs的運算子優先級OR顯然=系結得更緊密。有關詳細資訊,請參閱https://dev.mysql.com/doc/refman/8.0/en/operator-precedence.html。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/428851.html
