2011-07-11 41 views
0

我有一個情況,我們正在維護一個包含資源的表。這個表有一個varchar列,其中包含角色標識符作爲逗號分隔值(我知道標準化應該是要走的路,但不能改變長時間運行的工作系統)。例如。 role_ids列包含'1,4,6,9,10',另一行包含'5,10,15'。如何在包含INT的列中包含任何給定INT的行的列表以逗號分隔值

然後,對於系統中的用戶,我有相關的角色id作爲列表,例如, 4,15。現在我需要找到「任何多個」,即任何可能具有resource.role_ids列中的任何角色id的資源。

此問題與this one類似,但希望解決方案在Grails中無法使用。

我正在尋找一個MySQL解決方案 - 查詢或存儲過程。儘管使用'FIND_IN_SET()'可以實現查找一組資源,但不希望用每個用戶的role_id列表對數據庫執行多次調用。

+3

SHOULD不夠強大,'不能改變長時間運行的工作系統'可能比你想象的要少。這是一個非常糟糕的問題和設計,您將花費更長的時間來解決問題,修復問題並嘗試做這樣的事情,而不是花費精力去從代碼中移除糟糕的設計。這是一個有效的系統,但是你可能不會推出一個更好的解決方案,你應該計劃,實施和測試它。我非常非常強烈的建議。 [另外,它看起來只是幾張桌子] –

回答

1

使用像this one這樣的功能將您的列表變成單個記錄,然後正常加入所有內容。

相關問題