首頁 > 後端開發 > php教程 > 如何查詢單一資料庫列中儲存的多個值?

如何查詢單一資料庫列中儲存的多個值?

DDD
發布: 2024-12-16 10:04:20
原創
877 人瀏覽過

How Can I Query for Multiple Values Stored in a Single Database Column?

查詢列中的多個值

在關聯式資料庫中,資料列通常會為每行保存單一值。但是,在某些情況下,您可能需要在單一欄位中儲存多個值,並用逗號等分隔符號分隔。這可能會在查詢資料時帶來挑戰,因為等式運算子等傳統運算子不再按預期工作。

例如,考慮下表,它儲存父子關係:

id     name            children
1      Roberto         Michael,Dia
2      Maria           John,Alex
3      Mary            Alexandre,Diana
登入後複製

如果我們嘗試使用查詢來尋找有名為「Alex」的孩子的父母:

WHERE children = 'Alex'
登入後複製

我們將檢索到零結果,即使亞歷克斯是瑪麗亞的孩子。這是因為我們正在尋找精確匹配,但由於子列中存在多個值,因此不存在該匹配。

要處理這種情況,我們需要探索替代方法:

規範化架構:

理想的解決方案是規範化架構並為子項建立一個單獨的表,每個子項都有一個單獨的行以及對父級的參考。這將允許基於子名稱進行高效查詢。

使用 FIND_IN_SET:

如果規範化模式不可行,您可以使用 FIND_IN_SET 函數,該函數檢查是否值存在於逗號分隔的清單中。查詢將是:

WHERE FIND_IN_SET('Alex', children)
登入後複製

這將返回有一個名為 Alex 的孩子的父母。但是,需要注意的是,FIND_IN_SET 並不是最有效的方法,只有在標準化不可行時才應使用。

以上是如何查詢單一資料庫列中儲存的多個值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板