在MySQL 中使用分隔值連接多個表格中的資料
問題:
問題:
問題:
問題:
問題:
-
如何我可以有效率地從其中一列中具有分號分隔值的多個表中檢索數據,而無需使用外部語言或引入連結表?
- 答案:
至為了解決這個問題,我們可以利用一種技術,將分號分隔的值轉換為單獨的行。這使我們能夠連接表並獲得所需的結果。
<code class="sql">SELECT user_resource.user,
resource.data
FROM user_resource
JOIN integerseries AS isequence
ON isequence.id <= COUNT_IN_SET(user_resource.resources, ';') /* normalize */
JOIN resource
ON resource.id = VALUE_IN_SET(user_resource.resources, ';', isequence.id)
ORDER BY
user_resource.user, resource.data</code>
解決方案:
提供的解決方案採用兩個自訂MySQL 函數:
COUNT_IN_SET(SET(SET) )- :傳回給定字串中字元分隔項的計數。
- VALUE_IN_SET(haystack, delim,which)
- :處理將分隔清單作為陣列並檢索指定索引處的值(其中)。
這些函數與使用者表和資源表之間的聯接結合在一起,使用整數係列表來迭代分號-分隔值:此查詢結果會產生一個表,其中每個使用者的資源都表示為單獨的行,使我們能夠輕鬆連接資源表以獲取相應的資料。 其他資訊:integerseries 表包含一系列用於標準化分隔清單的數值。 COUNT_IN_SET 和 VALUE_IN_SET 函數可以在其他場景中重複使用,其中需要處理分隔清單。 對於 SQLite 資料庫,可以使用類似的解決方案:https://stackoverflow.com/a/24750820/302036
以上是如何在 MySQL 中使用分隔值連接多個表中的資料而不連結表?的詳細內容。更多資訊請關注PHP中文網其他相關文章!