查找列中具有多個值的記錄
在關聯式資料庫中,通常會在單一欄位中儲存多個值。但是,當使用此類列查詢資料時,隔離特定值可能具有挑戰性。讓我們探討一個場景,其中我們有一個包含「子層級」列的表,其中包含以逗號分隔的多個名稱。
問題:
考慮下表:
id | name | children |
---|---|---|
1 | Roberto | Michael,Dia |
2 | Maria | John,Alex |
3 | Mary | Alexandre,Diana |
目標是找到有一個名叫亞歷克斯的孩子的父母。雖然使用“WHERE Children = 'Alex'”是理想的選擇,但由於每個單元格中有多個名稱,它會失敗。使用“WHERE Children LIKE '%Alex%'”會傳回額外的不相關符合。
標準化架構:
要解決此問題,可以透過建立表架構來標準化一個單獨的兒童表,每個孩子佔一行。然後可以將原始表與子表連接起來,以找到具有特定子表的父表。然而,如果這個解決方案不可行,還有一個替代方案:
FIND_IN_SET 函數:
MySQL FIND_IN_SET() 函數可用來檢查特定值是否存在於逗號分隔的清單中。對於這種情況,查詢將為:
WHERE FIND_IN_SET('Alex', children)
此查詢將傳回在「children」列中找到「Alex」的行。
以上是如何有效率地尋找單一資料庫列中具有多個值的記錄?的詳細內容。更多資訊請關注PHP中文網其他相關文章!