如何在MySql中并排放置两列而不将它们合并到一列

时间:2017-08-06 13:01:33

标签: mysql sql

我想在MySql中并排放置两列,而不将它们合并到一列中。

例如 - > 输入1:

select empName A from tableA where role='X';

输出:

A
Rahul
Sandeep
Shishir

输入2:

select empName B from tableA where role='Y';

输出:

B
Suresh
Vinay
Ravindra

我希望我的最终输出为:

  A       B 
Rahul   Suresh
Sandeep Vinay
Shishir Ravindra

请注意,两个查询中的表格相同。

任何sql查询实现我想要的输出?

让我进一步澄清上述情况:

表A包含以下数据:

Employee_Name角色 乔丹X. 瑞奇Y. 萨钦Z. Sourabh Z. Anil X

我希望输出为:

X Y Z. Jordan Ricky Sachin Anil Sourabh

希望这可以消除所有疑问。

2 个答案:

答案 0 :(得分:0)

原始问题的答案是:

您可以使用条件聚合:

select max(case when role = 'X' then empName end) as X,
       max(case when role = 'Y' then empName end) as Y      
from tableA;

编辑:

更新问题的答案需要变量:

select max(x) as x, max(y) as y
from ((select empName as x, '' as y, (@xrn := @xrn + 1) as rn
       from tableA cross join (select @xrn := 0) params
       where role = 'X'
      ) union all
      (select '', empName, (@yrn := @yrn + 1) as rn
       from tableA cross join (select yxrn := 0) params
       where role = 'Y'
      )
     ) xy
group by rn;

答案 1 :(得分:0)

处理器如何知道哪个Y员工与哪个X员工合作?你会得到一个笛卡尔积的多个冗余行,而不是你想要的。但是,如果可以,那么只需使用自我加入:

select a.empName A, b,empName B
from tableA a
  cross join tableA b
where a.role='X'
  and b.role = 'Y'

要获得所需内容,您需要指定X员工与Y员工的关联方式。正如他们按字母顺序排序(...不是你想要的输出...)?或者怎么样?