我有一个非常愚蠢的问题。
让我们假设我有2个表,A有10行,B有100行。
我知道当我输入SELECT * FROM A, B
时,结果将是1000行。
我的问题是,为什么?
有人可以向我解释一下吗?
答案 0 :(得分:5)
因为这是一个cross join,它会在两个表之间为您提供cartesian product。
维基百科:
CROSS JOIN返回表中行的笛卡尔积 加入。换句话说,它将产生组合每行的行 第一个表与第二个表中的每一行
所以在这种情况下,10 * 100 =(猜猜是什么)1000。
答案 1 :(得分:0)
如果你想在结果中看到110 resord,你应该使用UNION来合并两个表的结果:
(SELECT * from A)
UNION
(SELECT * from B)
答案 2 :(得分:0)
您必须将关系与某些WHERE集成,以编辑此输出