我有一张这样的产品零件表:

部分

part_id   part_type   product_id--------------------------------------1      A       12      B       13      A       24      B       25      A       36      B       3
product_id   part_A_id   part_B_id----------------------------------------1        1       22        3       43        5       6

最佳答案

不幸的是,MySQL没有PIVOT功能,但您可以使用聚合函数和CASE语句对其进行建模.对于动态版本,您需要使用预准备语句:

SET @sql = NULL;SELECT GROUP_CONCAT(DISTINCT  CONCAT(   'max(case when part_type = ''',part_type,''' then part_id end) AS part_','_id'  ) ) INTO @sqlFROM parts;SET @sql = CONCAT('SELECT product_id,',@sql,'          FROM parts           GROUP BY product_id');PREPARE stmt FROM @sql;EXECUTE stmt;DEALLOCATE PREPARE stmt;
select product_id,max(case when part_type ='A' then part_id end) as Part_A_Id,max(case when part_type ='B' then part_id end) as Part_B_Idfrom partsgroup by product_id

总结

更多相关文章

  1. Android(安卓)之 下拉框(Spinner)的简单使用
  2. JS与Android(安卓)WebView的简单交互 + WebView 的简单使用
  3. Android(安卓)拨号器的简单实现
  4. Android调用天气预报的WebService简单例子
  5. Android中GPS定位的简单应用
  6. Android(安卓)之 下拉框(Spinner)的简单使用
  7. android实践项目一实现简单的验证码和spinner下拉选项效果
  8. 一个简单的iPhone项目及代码
  9. bridge和原生交互的简单用法

随机推荐

  1. Android(安卓)解读main log和event log日
  2. Android(安卓)设置TextView滑动滚动条和
  3. ubuntu添加android真机调试
  4. android简陋的开发工具
  5. Android中的MVC
  6. Android Activity从创建到显示流程
  7. Android 如何破解兼容性困局
  8. 学个明白--Android世界的坐标系
  9. Android(安卓)OKHttp系列2-RetryAndFollo
  10. 关于greenDao函数报错