【问题标题】:MySQL convert columns to rowsMySQL 将列转换为行
【发布时间】:2017-06-23 07:51:27
【问题描述】:

我有一个查询,它是通过连接两个选择语句形成的,它们将结果作为列 A、B、C、A、B、C 返回。这里 A,B,C 是相同但值不同的列的名称,因为它是来自两个不同查询的结果集。现在我想为 A、B、C 设置两行,而不是在一行中为两个表显示数据。像这样:-

现在:-

         A   B  C   A   B   C
Values  X1  X2 x3  Y1  Y2  Y3

必填:-

                     A   B  C
Value from table 1  X1  X2 x3
Value from Table 2  Y1  Y2 Y3

现在我的条件是我想要替代结果,即表 1 中的一行,然后表 2 中的一行,然后表 1 和表 2 中的行,依此类推......

这是一些示例代码。

Select * from 
        ( Select x,y,z from table1 ) A 
   join ( Select x,y,z from table1 ) B on A.x = B.x and A.y = B.z and A.z = B.y 

【问题讨论】:

  • 您的查询在哪里
  • 你想使用 UNION ALL 而不是 join
  • @denny - 可能,请查看示例代码。 Select * from ( Select x,y,z from table1 ) A join ( Select x,y,z from table1 ) B on Ax = Bx and Ay = Bz and Az = By 代码将从查询返回 x,y,z 列A 然后是查询 B 中的 x,y,z 列
  • 好吧误会
  • @GurV - No Union All 不会满足我的目的,因为我想根据表 1 中的值对表 2 使用 where 子句,据我所知,我们不能在 Union 之后使用 where 子句。如果我要去哪里错了,请提出建议。

标签: mysql database join pivot-table union


【解决方案1】:

你需要UNION ALL,尽管你的直觉与此相反。

由于您使用了SELECT *,您的问题的一部分可能源于混淆的列名称。专业提示:避免使用SELECT *

鉴于您在评论中提供的示例,您可以像这样得到您想要的。

Select A.x, A.y, A.z
  from ( Select x,y,z from table1 ) A 
  join ( Select x,y,z from table1 ) B on A.x = B.x and A.y = B.z and A.z = B.y 
 UNION ALL
Select B.x, B.y, B.z
  from ( Select x,y,z from table1 ) A 
  join ( Select x,y,z from table1 ) B on A.x = B.x and A.y = B.z and A.z = B.y 

你这样做:

 SELECT a1 a, b1 b, c1 c FROM t
  UNION ALL
 SELECT a2 a, b2 b, c2 c FROM t

t 被定义为复杂的结构化查询。这会让您的生活变得有点复杂,因为您将重复该查询两次以获得您想要的结果?为什么? MySQL 没有公用表表达式。

您可能希望将t 定义为视图以节省一些输入。或者您可能想要使用临时表,尤其是在生成 t 的查询非常耗时的情况下。

【讨论】:

  • 感谢问题中的编辑。现在我的疑问是如果我使用 Union All ,我能否以交替顺序获得最终结果?正如我在最初的问题中提到的那样,我想要 A.x, A.y, A.z B.x, B.y, B.z A.x, A.y, A.z B.x, B.y, B.z 如果是,那么如何?
  • SQL 中没有默认排序。除非查询包含ORDER BY 子句,否则结果集的顺序在形式上是不可预测的。这是计算机科学术语,如果您在没有ORDER BY 子句的情况下依赖排序,您将抱歉。您没有解释原始结果集应该如何排序。
  • 感谢您的线索。我创建了 Temp 表,用于在 A & B 中存储值,然后使用 UNION ALL 使用排名特征提取备用记录。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-01
  • 2021-06-20
  • 2014-01-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多