我的示例输入有三列,分别是ID,名称和房屋。我想要的输出只是两列id,guid。我根据列ID将所有行数据转置为列。使用全选语句。我的问题是,当我这样做时,我用逗号分隔了值。 是否可以使用查询来拆分这些逗号分隔的值并转置
答案 0 :(得分:0)
仍在尝试为您找到一种简单的解决方案,但作为一般说明,应该避免在列中使用CSV,而应使用单独的表或数组列。
还有一个问题(因为我没有足够的声誉来评论您的问题):houses字段中的值数是否有限制?
更新:我现在很茫然。我对Postgres和Oracle更为熟悉,而我最好的解决方案使用数组函数。据我所知,MySQL显然不支持数组类型。如果没有数组函数,最好的选择是使用临时表并对字符串进行拆分,但是每次拆分都需要有一条语句,因此您需要知道最大记录集中包含多少个值,以及是否有数百个最大房屋领域中的价值计算,编写所有这些代码可能会很耗时。
如果您使用的是Postgres,则可以通过以下方式实现解决方案(无需中介转置):
SELECT * FROM (SELECT id, name AS guid FROM table_name
UNION
SELECT id, unnest(string_to_array(t.houses, ',')) AS guid FROM table_name t) u
ORDER BY id, guid;