MySQL,重复第一列中每个值的所有值

时间:2014-02-27 02:20:58

标签: mysql

抱歉,我甚至不知道该怎么问,但那就是问题。我有一个30行的小桌子。

我想从一列中选择所有值,并且每个值都会带来另一列中的所有值,重复。

让我试着表明,小例子,这是我的表和价值观:

[column color] / [column qtd]
blue / 3
red / 5
gray / 7
yellow / 2

我想将结果带到SELECT查询中:

blue / 3
blue / 5
blue / 7
blue / 2
red / 3
red / 5
red / 7
red / 2
gray / 3
gray / 5
gray / 7
gray / 2
yellow / 3
yellow / 5
yellow / 7
yellow / 2

它带来了列颜色的所有值,并为每个不同的颜色值重复qtd的所有值。

对不起,这有点难以解释:(

但是谢谢。

2 个答案:

答案 0 :(得分:1)

您可以针对从同一个表返回CROSS JOIN的子查询执行DISTINCT qtd。这将导致子查询中的所有行都连接到DISTINCT color的所有行。

SELECT DISTINCT
  color,
  q.qtd
FROM
  /* Assuming your table is `color` */
  color
  /* CROSS JOIN (like an inner join with no ON clause) */
  CROSS JOIN (
    SELECT DISTINCT qtd FROM color
  ) q
ORDER BY color, q.qtd

以下是演示:http://sqlfiddle.com/#!2/42342/3

答案 1 :(得分:1)

您似乎想要表中两个值的所有组合。将cross joindistinct

一起使用
select c.color, q.qtd
from (select distinct color from table t) c cross join
     (select distinct qtd from table t) q