FIND_IN_SET() 與IN():了解MySQL 中的差異
問題:
在MySQL 中,我們有兩個表:「orders」和「company」。 「orders」中的「attachedCompanyIDs」欄位儲存引用「company」中行的逗號分隔的 ID 清單。當使用 FIND_IN_SET() 查詢與訂單關聯的公司名稱時,我們得到了預期的結果。但是,使用 IN() 僅返回第一個匹配的公司。為什麼會發生這種情況?
答案:
attachedCompanyIDs 欄位是 VARCHAR 類型的標量值。當使用 IN() 時,MySQL 將字串轉換為整數,並在第一個非數字字元(即逗號)處截斷它。這意味著如果attachedCompanyIDs包含多個值,則只會考慮第一個進行IN比較。
解決方法:
根據您的特定場景,有此問題的幾種解決方法:
其他注意事項:
以上是MySQL FIND_IN_SET() 與 IN():為什麼 IN() 只傳回第一個以逗號分隔的 ID 匹配項?的詳細內容。更多資訊請關注PHP中文網其他相關文章!