I have a product parts table like this: part part_id part_type product_id -------------------------------------- 1A1 2 B 1 3A2 4 B 2 5A3 6 B 3 I want a query that returns a table like this: product_id part_A_id part_B_id ---------------------------------------- 1 1 2 2 3 4 3 5 6 In actual implementation, there will be millions of product parts 1 Answer Unfortunately, MySQL doesn't have a PIVOT function, but you can model it using aggregate functions and a CASE statement. For a dynamic version you'll need to use a prepared statement: SET @sql = NULL; SELECT GROUP_CONCAT(DISTINCT CONCAT( 'max(case when part_type = ''',part_type,''' then part_id end) AS part_','_id' ) ) INTO @sql FROM parts; SET @sql = CONCAT('SELECT product_id,',@sql,' FROM parts GROUP BY product_id'); PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; If you only have a few columns then you can use the static version: 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_Id from parts group by product_id Summarize The above is all the content of MySQL dynamic perspective collected and organized by 123WORDPRESS.COM for you. I hope this article can help you solve the program development problems encountered in MySQL dynamic perspective. You may also be interested in:
|
<<: React+TypeScript project construction case explanation
>>: How to upgrade all Python libraries in Ubuntu 18.04 at once
Table of contents compose function Array.prototyp...
1. CSS file naming conventions Suggestion: Use le...
Table of contents Basic Configuration Entry file ...
Table of contents First we need to build the page...
Using the CSS float property correctly can become...
1. Python automatically runs at startup Suppose t...
When a website is maliciously requested, blacklis...
Table of contents Preface Installation and Config...
For various reasons, sometimes you need to modify...
Types of joins 1. Inner join: The fields in the t...
1. Overall steps At the beginning, we introduced ...
The so-called container actually creates a readab...
This article shares the specific code of JS+AJAX ...
I spent a day on it before this. Although Seata i...
Table of contents cluster Cluster Details Events ...