您好,登錄后才能下訂單哦!
有時候,我們需要做多條件查詢,多個條件為“或”的關系,分類查詢等,一般會用到多段select語句,然后用union或者union all進行連接,進而查出需要的結果。
例如,
select
a.id as id,
a.name as name,
a.age as age
from scama.table_name2 a
where 1=1
union all
select
b.sn as id,
b.name as name,
b.age as age
from scama.table_name2 b
where 1=2
union all
select
c.serial_id as id,
c.name as name,
c.age as age
from scama.table_name3 c
where 1=3
;
此時程序實現時,存在不少的麻煩。例如,大段的相似的sql容易出錯,后續的維護的不方便,以及如果程序拼接了sql后傳遞給數據庫執行帶來的性能問題等等。
那么如何進行更好的改進實現呢?
方式有很多,博主根據自己的經驗提供如下兩種方案可供參考。
1、將各段查詢語句,分開調用
將每段select單獨寫方法調用,最后再將每個調用的結果匯總為結果。
例如,
datatable dt1= 調用第一段的sql的結果;
datatable dt2= 調用第二段的sql的結果;
...
依次查詢完成,最后合并dt1,dt2....
這種方案針對前臺程序將sql拼接為字符串,通過程序本身框架內實現的與數據庫的連接方式,執行sql語句。
2、后臺完成,將查詢的結果寫入臨時表或者中間表,直接查詢該表的結果
即,使用存儲過程或者函數,將需要查詢的多條sql語句插入至一張臨時表(物理表也可),然后返回結果。
這種方式,因為是在數據庫中完成,那么有些需要查詢的字段,就可以單獨寫語句查詢出來再賦值給當前結果。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。