从查询中创建的表中加入2行

时间:2014-11-14 16:48:21

标签: mysql

我有一个包含项目列表的表格。每个项目有两种变体,但它们在此主表中作为单个项目。我想做的是结果的笛卡尔积和两种变体。

SELECT * FROM items

会给我

ID
1
2

我想:

ID   Variation
1    a
1    b
2    a
2    b

这必须在查询中完成,因为还有另一个左连接。

我可以通过以下方式获得第一个变体:

SELECT * FROM items JOIN (SELECT 'a' as Variation) as v

但这只给了我需要的4行中的2行。

我知道,如果我有一个实际的变量表,有两行,那就行了。是否可以创建两行?我也试过了,但失败了:

SELECT * FROM items JOIN (SELECT ('a','b') as Variation) as v

2 个答案:

答案 0 :(得分:2)

如果您希望每行项目与ab配对,您可以这样做:

SELECT * FROM items
CROSS JOIN (
    SELECT 'a' Variation
    UNION ALL
    SELECT 'b' Variation
    ) Variations

Sample SQL Fiddle

答案 1 :(得分:0)

您可以使用:

SELECT * FROM items CROSS JOIN items AS v

正如@Strawberry评论的还有另一种选择:

SELECT * FROM items JOIN items AS v