阿里-代码规范:超过三个表禁止join

phn555 2018-07-23 04:32:19
阿里-代码规范:超过三个表禁止join,请问需要多表关联时,怎么解决
...全文
2682 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
ChihoiTse 2020-02-03
  • 打赏
  • 举报
回复
引用 6 楼 zbdzjx 的回复:
说不定是要分多次查询。 例如,要从姓名找其所在部门名称。先从人事表中,通过姓名查到部门ID;再查部门表,通过部门ID查到部门名称。
能用一句SQL解决的绝不用两句
锅小鹏 2020-01-08
  • 打赏
  • 举报
回复
复杂查询还是能提视图就用视图解决了
flash_csdn 2019-09-21
  • 打赏
  • 举报
回复
引用 12 楼 talentsonglee 的回复:
[quote=引用 11 楼 砸死牛顿的苹果 的回复:] a join b join c join d ==> (a join b) join(c join d) 这样算几次?
你活像个傻逼[/quote]哈哈
talentsonglee 2019-08-05
  • 打赏
  • 举报
回复
引用 11 楼 砸死牛顿的苹果 的回复:
a join b join c join d ==> (a join b) join(c join d) 这样算几次?
你活像个傻逼
  • 打赏
  • 举报
回复
a join b join c join d
==>
(a join b) join(c join d)
这样算几次?
guguda2008 2018-12-07
  • 打赏
  • 举报
回复
三个表以上JOIN这种情况都是因为冗余不够多,添加足够的冗余表即可。冗余表既可以是临时表,也可以是定时生成的拍照表。
JAVA数据结构 2018-12-05
  • 打赏
  • 举报
回复
不同join,统计的时候怎么办?
Donzch 2018-12-01
  • 打赏
  • 举报
回复
首先贴出原文:
2. 【强制】超过三个表禁止 join。需要 join 的字段,数据类型必须绝对一致;多表关联查询时,
保证被关联的字段需要有索引。
说明:即使双表 join 也要注意表索引、SQL 性能。


我百度了下join 和inner join的区别,发现是同一个,根据语句应该给是可以用left join的,因为上面也提到多表关联时,怎么怎么样了
专注or全面 2018-07-26
  • 打赏
  • 举报
回复
跟多个因素有关,表的设计,应用系统的设计等等都有关系
二月十六 2018-07-24
  • 打赏
  • 举报
回复
不让三个表链接,那就从表设计入手
zbdzjx 2018-07-24
  • 打赏
  • 举报
回复
说不定是要分多次查询。
例如,要从姓名找其所在部门名称。先从人事表中,通过姓名查到部门ID;再查部门表,通过部门ID查到部门名称。
吉普赛的歌 2018-07-23
  • 打赏
  • 举报
回复
IF OBJECT_ID('tempdb..#tmp') IS NOT NULL DROP TABLE #tmp

SELECT t.name AS tableName,
c.name AS colName,
p.name AS typeName,
t.[object_id] AS table_objId,
c.column_id
INTO #tmp
FROM sys.tables AS t
INNER JOIN sys.[columns] AS c
ON t.[object_id] = c.[object_id]
INNER JOIN sys.types AS p
ON c.system_type_id = p.system_type_id

SELECT * FROM #tmp AS t LEFT JOIN sys.extended_properties AS ep ON t.table_objId=ep.major_id AND t.column_id = ep.minor_id

IF OBJECT_ID('tempdb..#tmp') IS NOT NULL DROP TABLE #tmp

临时表咯, 还能有多好的办法
phn555 2018-07-23
  • 打赏
  • 举报
回复
这。。。,这和join有区别
丰云 2018-07-23
  • 打赏
  • 举报
回复
引用 楼主 phn555 的回复:
阿里-代码规范:超过三个表禁止join,请问需要多表关联时,怎么解决

可以不用join撒

比如:
select xxx form tb1 t1, tb2 t2,tb3 t3,tb4 t4,tb5 t5 where t1.yyy = t2.yyy and t2.zzz = t3.zzz and t3.mmm = t4.mmm and t4.nnn = t5.nnn
吉普赛的歌 2018-07-23
  • 打赏
  • 举报
回复
楼主都进了阿里, 这点小问题还解决不了??

22,210

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧