我有一张表,其中包含项目列表。每个项目有 2 个变体,但它们作为单个项目在此主表中。我想做的是两个变化的结果的笛卡尔积。
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
最佳答案
如果您希望每行项目与 a
或 b
配对,您可以这样做:
SELECT * FROM items
CROSS JOIN (
SELECT 'a' Variation
UNION ALL
SELECT 'b' Variation
) Variations
关于mysql - 连接查询中创建的表中的 2 行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26934939/