[英]Merge two row results into one row MYSQL
I have a table having following structure: 我有一个具有以下结构的表:
| pid | email | email_type |
| 1 | x | 1 |
| 1 | y | 2 |
| 1 | z | 3 |
| 2 | ab | 1 |
| 3 | cd | 2 |
Now I want my result for the pid
parameter in format for email_type[1 & 2]
only: 现在,我只希望将pid
参数的结果的格式设置为email_type[1 & 2]
:
Case pid=1
情况pid=1
| pid | email_p | email_w |
| 1 | x | y |
Case pid=2
情况pid=2
| 2 | ab | NULL |
Case pid=3
情况pid=3
| 3 | NULL | cd |
Here email_p
represents email_type=1
& email_w
represents email_type=2
这里email_p
代表email_type=1
,而email_w
代表email_type=2
I am using following query, and its working fine except for a case pid=2
. 我正在使用以下查询,除了大小写pid=2
以外,它的工作正常。 Case I & Case III are successfully fetched. 成功获取案例I和案例III。 Please provide some solution with good explanation(if possible). 请提供一些具有良好解释的解决方案(如果可能)。
SELECT `e`.`pid`, `e`.`email` AS `email_p`, `e1`.`email` AS `email_w` FROM `table1` AS `e` LEFT JOIN `table1` AS `e1` ON e.pid=e1.pid AND e1.email_type=2 WHERE (e.pid IN (1) AND e.email_type=1)
It fails when e.pid = 2
and it returns empty result set & please provide solution e.pid IN (1,2,3)
holds good for required format.#MYSQL 当e.pid = 2
时失败,并且返回空结果集并请提供解决方案e.pid IN (1,2,3)
适合所需格式。#MYSQL
Try This 尝试这个
SELECT pid,
MAX(CASE WHEN email_type=1 THEN email END ) as email_p ,
MAX(CASE WHEN email_type=2 THEN email END ) as email_w
FROM tableName
WHERE email_type IN (1,2)
GROUP BY pid
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.