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