最近在項目中看到一個查詢語句,讓我有興趣去研究、研究。查詢語句如下:
重點分析第二個INNER JOIN ON 1 = 1 這個語句;內連接表示查詢兩個表的交集,而且ON的條件為 1=1 就表示連接條件永遠成立。
更確切的說就是將第二個INNER JOIN 前面的查詢結果和后面的查詢結果組裝成一個結果進行返回。這就比較有意思了,因為這種查
詢方式可以是兩個完全不同的查詢結果,並且只需要寫一個查詢語句,這在一定程度上提升了效率。以上面的查詢為例trade_name, total
是一個查詢結果;alltotal是另外一個查詢結果,最后將這兩個不同的查詢結果合成為一個結果返回。這樣既滿足了業務的需求,也提高了
效率,所以有需要的時候還是值得借鑒一下。
如果是常規做法可能會先做一個查詢去查詢trade_name, total和值;然后在做一個查詢去查詢alltotal的值;最后在代碼中進行合並,
將最終的結果返回。比較一下這兩種方式,還是只查詢一次,代碼更加的簡潔,SQL語句的話也很好理解。不過這種查詢方式只適用於
統計查詢,或者是返回結果只有一行的情況。
說明:添加雙引號是因為Oracle查詢時返回的列全部是大寫的,而對應的實體類中列名是小寫的,因此才添加雙引號將Oracle查詢的
結果變為小寫,這樣才能將結果正確的映射到實體類中。