我有一个包含项目列表的表格。每个项目有两种变体,但它们在此主表中作为单个项目。我想做的是结果的笛卡尔积和两种变体。
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
答案 0 :(得分:2)
如果您希望每行项目与a
或b
配对,您可以这样做:
SELECT * FROM items
CROSS JOIN (
SELECT 'a' Variation
UNION ALL
SELECT 'b' Variation
) Variations
答案 1 :(得分:0)
您可以使用:
SELECT * FROM items CROSS JOIN items AS v
正如@Strawberry评论的还有另一种选择:
SELECT * FROM items JOIN items AS v