久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

SQL中UNION關鍵字怎么用

131次閱讀
沒有評論

共計 2735 個字符,預計需要花費 7 分鐘才能閱讀完成。

丸趣 TV 小編給大家分享一下 SQL 中 UNION 關鍵字怎么用,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

SQL 中的 UNION 關鍵字,將實現將多個查詢條件中的結果展示出來。

UNION

??UNION 的中文含義是聯合的意思,即合并兩個或多個 SELECT 語句的結果。使用技巧如下:

UNION 內部的每個 SELECT 語句必須擁有相同數量的列。

列必須擁有相似的數據類型。

每個 SELECT 語句中的列的順序必須相同。

相同數量的列

如下圖,使用上一章介紹的數據作為演示數據

分別建立表 s_user 和表 s_user_1

CREATE TABLE `s_user` ( `userid` int(11) NOT NULL AUTO_INCREMENT,
 `user_name` varchar(255) DEFAULT NULL,
 `name` varchar(255) DEFAULT NULL,
 `pass_word` varchar(255) DEFAULT NULL,
 `salt` varchar(255) DEFAULT NULL,
 `state` varchar(255) DEFAULT NULL,
 `create_time` datetime DEFAULT NULL,
 PRIMARY KEY (`userid`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;

測試數據如下:

INSERT INTO `test`.`s_user`(`userid`, `user_name`, `name`, `pass_word`, `salt`, `state`, `create_time`) VALUES (1,  小米 ,  小米 ,  123123 ,  123 ,  1 ,  2022-02-10 19:48:43 
INSERT INTO `test`.`s_user`(`userid`, `user_name`, `name`, `pass_word`, `salt`, `state`, `create_time`) VALUES (2,  小白 ,  小白 ,  123123 ,  123 ,  1 ,  2022-02-10 19:48:43 
INSERT INTO `test`.`s_user_1`(`userid`, `user_name`, `name`, `pass_word`, `salt`, `state`, `create_time`) VALUES (1,  小紅 ,  小紅 ,  123123 ,  123 ,  1 ,  2022-02-10 19:48:43 
INSERT INTO `test`.`s_user_1`(`userid`, `user_name`, `name`, `pass_word`, `salt`, `state`, `create_time`) VALUES (2,  小黃 ,  小黃 ,  123123 ,  123 ,  1 ,  2022-02-10 19:48:43

UNION 內部的每個 SELECT 語句必須擁有相同數量的列:先查詢具有相同列的 SQL

SELECT * FROM `s_user` UNION SELECT * FROM `s_user_1`

查詢出所有的列,可以看到,執行結果如下。

如果第一個查詢是所有列,第二個查詢是三個字段,那么查詢結果又是怎么樣呢,現在執行如下 SQL:

錯誤用法

SELECT * FROM `s_user` UNION SELECT userid,name,pass_word FROM `s_user_1`

錯誤提示:使用的 SELECT 語句查詢出不同的列數

正確用法

SELECT userid,name,pass_word FROM `s_user` UNION SELECT userid,name,pass_word FROM `s_user_1`

數據類型

??上面看到了多個查詢的列數必須相同,那么查詢出的列數如果相同,查詢字段的數據類型不同,是否可正常處理呢?下面將 s_user 查詢中的 pass_word 換成 create_time,進行查詢。通過查詢之后可以看到。在 SQL 查詢中,列的數據類型是無關的。當然實際業務中是不會將其設置成不同的類型的。

SELECT userid,name,create_time FROM `s_user` UNION SELECT pass_word,name,userid FROM `s_user_1`

列順序

??在使用 UNION 關鍵字進行查詢時,是否和列的順序有關呢,上面看到可能和列的順序有關,可能也是無關的,那么進行一下測試。可以看到執行結果是和列的順序無關的。在實際業務中是合并多個查詢,因此我們在項目中定義是需要列的順序一致的。

SELECT create_time,userid,name FROM `s_user` UNION SELECT pass_word,name,userid FROM `s_user_1`

UNION 和 UNION ALL 區別

??為了測試 UNION 和 UNION ALL 區別需要在數據表 s_user_1 中增加【小白】,與表 s_user 中的【小白】都存在數據庫中,兩個會有什么不同結果呢。

INSERT INTO `test`.`s_user_1`(`userid`, `user_name`, `name`, `pass_word`, `salt`, `state`, `create_time`) VALUES (3,  小白 ,  小白 ,  123123 ,  123 ,  1 ,  2022-02-10 19:48:43

首先執行:

SELECT user_name,name,pass_word,salt
FROM `s_user` UNION SELECT user_name,name,pass_word,salt FROM `s_user_1`

執行結果:

再次執行

SELECT user_name,name,pass_word,salt
FROM `s_user` UNION ALL SELECT user_name,name,pass_word,salt FROM `s_user_1`

執行結果:

??可以看到 UNION 關聯的去除了重復項,而 UNION ALL 查詢出了所有的值,沒有去除重復數據。

以上是“SQL 中 UNION 關鍵字怎么用”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注丸趣 TV 行業資訊頻道!

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-07-15發表,共計2735字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 延吉市| 商南县| 漳浦县| 如皋市| 北宁市| 广水市| 安溪县| 兴安盟| 介休市| 阳山县| 扎兰屯市| 金山区| 军事| 阳江市| 隆林| 柳州市| 阿城市| 宣威市| 大田县| 长武县| 珲春市| 昂仁县| 清河县| 新宁县| 北碚区| 都安| 长岭县| 含山县| 德阳市| 雅江县| 板桥市| 临漳县| 华亭县| 香格里拉县| 来安县| 平顺县| 嫩江县| 庆安县| 城市| 汶上县| 牡丹江市|