sql:笛卡尔积

	select n1.date,n2.webCname
	from (
		SELECT CONVERT (VARCHAR (10),dateadd(DAY, number, '20200401'),112) AS [date]
		FROM master..spt_values
		WHERE datediff(DAY,dateadd(DAY, number, '20200101'),GETDATE()) >= 0
		AND number BETWEEN 0 and 120
		AND type = 'p'
	) n1
	CROSS join demo_20200526 n2 

连接方式:

    1>.INNER JOIN,内联,系统默认,相当于JOIN 。返回多表之间完全匹配的结果。
    2>.LETF JOIN ,左联,返回除了有完全匹配的结果还有左表所有行。
	3>.RIGHT JOIN ,右联,返回除了有完全匹配的结果还有右表所有行。
	4>.Full JOIN ,完全外链接,返回除了有完全匹配的结果还有左右表所有行。
		其中LETF JOIN、RIGHT JOIN和Full JOIN 均属于外连接(OUTER JOIN)
	5>.CROSS JOIN,交叉连接,又称为自然连接,即生成一个笛卡尔积。(应该类似于传统方式)

SQL Server JOIN 内部实现的三种算法:

  • Loop join(嵌套循环), 遍历 A,将A表中的每一条记录与 B表进行连接比较,如果满足A.di=B.id,则返回记录;
  • Merge join(合并连接), 对A,B表进行排序,然后同时遍历A和B表,进行A.id=B.id的验证,直到遍历到A和B表结束;
  • Hash join(哈希连接), 对A表所有记录的id进行hash计算,最终形成一个hash表,然后join时,遍历B表,对B表每条记录的id进行hash运算,然后在A的Hash表中验证是否一致,最后得出结果。

参考资料:https://www.cnblogs.com/chinaboyzzy/p/4844276.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值