我遇到了一個問題,我不知道是否有任何方法僅通過SQL的幫助來解決它。 我有一個表users
具有特殊修改的SQL選擇查詢
+----+------------+
| ID | group_id |
+----+------------+
| 1 | 1;2;3 |
+----+------------+
| 2 | 1;2;3;4 |
+-----------------+
| 3 | 1;2;3;6 |
+-----------------+
| 4 | 1;2;6 |
+-----------------+
我知道,這不是正常的形式,但我不能改變它,因爲它已經在客戶端使用。
所以問題是不顯示用戶有我沒有的組。
例如:如果我爲ID = 3的用戶進行選擇,則需要顯示用戶1,3和4,因爲用戶ID = 3具有用戶ID = 1的所有組,但我不應顯示用戶ID = 2
我的同事幫我找到最佳的解決方案,如果有人有興趣:
SELECT *
FROM `users`
WHERE CONCAT('[',REPLACE('1;2;3;6', ';', ']['), ']') LIKE CONCAT('%[', REPLACE(group_id,';',']%['),']%')
會更好地告訴客戶會有DB結構的下一個版本的變化。 –
不幸的是,這是不可能的。整個結構應該改變,因爲都是這樣的,客戶肯定會說不。 –