You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL行转列按propid合并数据 实现同ID属性值单行展示

问题根因

你当前查询返回多行的核心问题是分组字段选错了:用proptype作为分组依据,必然会把同一propid下不同属性类型的记录拆成独立行;同时CASE判断仅在当前行proptype匹配时才触发子查询取值,其余列全部留空,最终就出现了同一propid分散在多行的错误结果。

修正后SQL

直接使用条件聚合实现行转列,无需嵌套子查询,按propid分组即可保证每个ID仅返回一行:

SELECT
  propid,
  GROUP_CONCAT(CASE WHEN proptype = 'house' THEN propdetails END) AS house,
  GROUP_CONCAT(CASE WHEN proptype = 'acreage' THEN propdetails END) AS acreage,
  GROUP_CONCAT(CASE WHEN proptype = 'pool' THEN propdetails END) AS pool,
  GROUP_CONCAT(CASE WHEN proptype = 'apartment' THEN propdetails END) AS apartment
FROM propdatabase
GROUP BY propid;
逻辑说明
  • 分组维度调整为propid,从根本上保证每个房产ID仅输出一行记录
  • 将聚合函数GROUP_CONCAT写在最外层,配合CASE WHEN做值筛选:仅当记录的proptype匹配当前列的属性类型时,才传入propdetails参与拼接,不匹配时返回NULL,GROUP_CONCAT会自动忽略NULL值,不会拼接无效内容
  • 该写法比原嵌套子查询写法执行效率更高,无匹配值的列会自动返回空值,和预期输出效果完全一致

内容的提问来源于stack exchange,提问作者Joey Martin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 21:39:15