一、Union連接兩張表之前,怎么判斷要連接的另一張表是否存在
那你這個必須通過程序判斷 或者存儲過程去實現(xiàn),只用一條SQL是解決不了的。
若是MySQL數(shù)據(jù)庫,做法:
IF 去information_schema讀取tables 表,判斷指定庫名的某表是否存在;
存在,則是UNION的SQL語句
ELSE
不存在,則是單條表SQL語句
END IF
首先,Union操作是求集合,主要是查詢結(jié)果的并集的。其次,在需求分析,邏輯結(jié)構(gòu)設(shè)計等部分,表就應(yīng)該已經(jīng)定義了。如果是一些數(shù)據(jù)庫提供了臨時表,那也是應(yīng)用系統(tǒng)負責邏輯判斷。
union用于連接兩個以上的 SELECT 語句的結(jié)果組合到一個結(jié)果集合中。多個 SELECT 語句會刪除重復的數(shù)據(jù)。
使用union操作符會將多張表中相同的數(shù)據(jù)取值一次,如果想將表1和表2中的值完整的顯示出來,可以使用union all。
延伸閱讀:
二、聲明式與命令式
命令式(Imperative)和聲明式(Declarative)是很早就有的概念,比如 SQL、HTML、CSS 是典型的聲明式語言,而我們使用的絕大部分編程語言都是命令式的。
命令式編程就像它的名字一樣,它由開發(fā)者我們一步一步的告述計算機,執(zhí)行一系列的操作,然后得到想要的結(jié)果,起主要作用的是開發(fā)者,計算機只是幫助開發(fā)者執(zhí)行計算而已。
而聲明式編程卻與此相反,它不是告述計算機做什么做,而是直接告述計算它想要的結(jié)果,至于怎么做,由預(yù)先寫好的程序依據(jù)一定的算法由計算機自動推算出來。
聲明式與命令式的主要區(qū)別在于,聲明式描述的是結(jié)果,它不關(guān)心過程。比如 SQL,我們告述數(shù)據(jù)庫的是,我們要查詢某張表滿足某某條件的數(shù)據(jù),但我們并不會告述數(shù)據(jù)庫怎么去查,怎么查數(shù)據(jù)是數(shù)據(jù)庫系統(tǒng)自己關(guān)心的事情。