我有一张table:
id | room_type | room_size
1 | a;b;c | 5;7;12
2 | b;c;d;f | 8;2;4
3 | b;c;d;f;g;h | 6;4;5;6;7;2;9
我想要这样的输出:
id | name | room_size
1 | a | 5
1 | b | 7
1 | c | 12
2 | b | 8
2 | c | 2
2 | d | 4
2 | f | NULL
3 | b | 6
3 | c | 4
3 | d | 5
3 | f | 6
3 | g | 7
3 | h | 2
注:在(id)2中,房间大小计数小于1。在(id)3中,房间大小增加了1
1条答案
按热度按时间6jjcrrmo1#
不要存储逗号分隔的值列表(这并不意味着用分号代替逗号。)
sql反模式:避免数据库编程的陷阱——bill karwin,第2章
可在亚马逊和其他优秀的书商。
https://www.amazon.com/sql-antipatterns-programming-pragmatic-programmers/dp/1934356557
对于有限数量的值,我们可以将它们拆分为单独的行
(替换内联视图)
t
用你的table)退货:
内联视图
i
应扩展到我们期望提取的有限的最大值数:UNION ALL SELECT 10 UNION ALL SELECT 11 ...
.