阿里-代碼規范:超過三個表禁止join,請問需要多表關聯時,怎么解決
uj5u.com熱心網友回復:
樓主都進了阿里, 這點小問題還解決不了??
uj5u.com熱心網友回復:
可以不用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
uj5u.com熱心網友回復:
這。。。,這和join有區別
uj5u.com熱心網友回復:
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
臨時表咯, 還能有多好的辦法
uj5u.com熱心網友回復:
不讓三個表鏈接,那就從表設計入手uj5u.com熱心網友回復:
說不定是要分多次查詢。例如,要從姓名找其所在部門名稱。先從人事表中,通過姓名查到部門ID;再查部門表,通過部門ID查到部門名稱。
uj5u.com熱心網友回復:
跟多個因素有關,表的設計,應用系統的設計等等都有關系uj5u.com熱心網友回復:
首先貼出原文:2. 【強制】超過三個表禁止 join。需要 join 的欄位,資料型別必須絕對一致;多表關聯查詢時,
保證被關聯的欄位需要有索引。
說明:即使雙表 join 也要注意表索引、SQL 性能。
我百度了下join 和inner join的區別,發現是同一個,根據陳述句應該給是可以用left join的,因為上面也提到多表關聯時,怎么怎么樣了
uj5u.com熱心網友回復:
不同join,統計的時候怎么辦?uj5u.com熱心網友回復:
三個表以上JOIN這種情況都是因為冗余不夠多,添加足夠的冗余表即可。冗余表既可以是臨時表,也可以是定時生成的拍照表。uj5u.com熱心網友回復:
a join b join c join d==>
(a join b) join(c join d)
這樣算幾次?
uj5u.com熱心網友回復:
你活像個傻逼uj5u.com熱心網友回復:
哈哈uj5u.com熱心網友回復:
復雜查詢還是能提視圖就用視圖解決了uj5u.com熱心網友回復:
說不定是要分多次查詢。
例如,要從姓名找其所在部門名稱。先從人事表中,通過姓名查到部門ID;再查部門表,通過部門ID查到部門名稱。
能用一句SQL解決的絕不用兩句
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/71583.html
標籤:疑難問題
上一篇:eclipse str新建class第一排報錯并且運行不了
下一篇:大神求救!!!
