我正在处理一个设计不佳的旧数据库,过渡到新系统。
产品通过以下方式与类别相关联:
|------------|------------------|
| product_id | category_ids |
|------------|------------------|
| 12 | 34,52,105 |
|------------|------------------|
| 14 | 34,52,192 |
|------------|------------------|
我正在尝试找出如何从该列中选择所有唯一类别ID的列表,就像这样:
|-------------|
| category_id |
|-------------|
| 34 |
|-------------|
| 52 |
|-------------|
| 105 |
|-------------|
| 192 |
|-------------|
任何帮助将不胜感激,谢谢!
答案 0 :(得分:1)
以下是在MySQL中使用隐式转换“技巧”的方法:
select distinct substring_index(t.category, ',', -n) + 0
from (select 1 as n union all select 2 union all select 3
) n cross join
t
这从末尾得到第n个元素 。然后使用+ 0
转换为数字。转换在逗号处停止,因此从末尾获得第n个值。
您可以将n
派生表扩展到列表中的最大元素数。