我对以下问题感到困惑 - 我有两张桌子,
Table A (A1,A2,A3,A4)
TABLE B (B1,B2,B3,B4,B5)
从表A和表B的3行生成2行的所有可能组合的查询是什么。
例如 - 我可以像[A1,A2,B1,B2,B3],[A1,A1,B2,B3,B4]
这样的组合是合法的。即允许表中的重复值,因为不允许表B中的值重复,即不允许[A1,A2,B1,B1,B1]
。
我们如何为此编写SQL查询?
提前感谢你们。
答案 0 :(得分:3)
您可以使用cross join
获取所有组合。那么,您的目标是将这些主题过滤到“b”表中的条件。以下查询使用cross join
和where
子句执行此操作:
SELECT a1.value AS a1,
a2.value AS a2,
b1.value AS b1,
b2.value AS b2,
b3.value AS b3
FROM tablea a1
CROSS JOIN tablea a2
CROSS JOIN tableb b1
CROSS JOIN tableb b2
CROSS JOIN tableb b3
WHERE b1.value < b2.value
AND b2.value < b3.value;
为避免重复,TableB
中的值必须按顺序排列。