国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > MySQL > 正文

MySQL union 語法代碼示例分析

2020-01-19 00:14:42
字體:
來源:轉載
供稿:網友
復制代碼 代碼如下:

SELECT ...
UNION [ALL | DISTINCT]
SELECT ...
[UNION [ALL | DISTINCT]
SELECT ...]
SELECT ... UNION [ALL | DISTINCT] SELECT ... [UNION [ALL | DISTINCT] SELECT ...]

UNION 用于把來自許多SELECT語句的結果組合到一個結果集合中。 (如果你要將多個表的查詢結果進行合并輸出比如說 群組消息跟個人消息表是分離的但是想一起提取出來并顯示的話就可以如此處理。通過MySQLUNION聯合查詢出來即可)
列于每個SELECT語句的對應位置的被選擇的列應具有相同的類型(前提條件是兩個SELECT出來的列類型要保持一樣的才行?。?。(例如,被第一 個語句選擇的第一列應和被其它語句選擇的第一列具有相同的類型。)在第一個SELECT語句中被使用的列名稱也被用于結果的列名稱。
SELECT語句為常規的選擇語句,但是受到如下的限定:
只有最后一個SELECT語句可以使用INTO OUTFILE。
HIGH_PRIORITY不能與作為UNION一部分的SELECT語句同時使用。如果您對第一個 SELECT指定了HIGH_PRIORITY,則不會起作用。如果您對其它后續的SELECT語句指定HIGH_PRIORITY,則會產生語法錯 誤。
如果您對UNION不使用關鍵詞ALL,則所有返回的行都是唯一的,如同您已經對整個結果集合使用了DISTINCT。如果您指定了ALL,您會從 所有用過的SELECT語句中得到所有匹配的行。
DISTINCT關鍵詞是一個自選詞,不起任何作用,但是根據SQL標準的要求,在語法中允許采用。(在MySQL中,DISTINCT代表一個共 用體的默認工作性質。)
您可以在同一查詢中混合UNION ALL和UNION DISTINCT。被混合的UNION類型按照這樣的方式對待,即DISTICT共用體覆蓋位于其左邊的所有ALL共用體。DISTINCT共用體可以使 用UNION DISTINCT明確地生成,或使用UNION(后面不加DISTINCT或ALL關鍵詞)隱含地生成。
如果您想使用ORDER BY或LIMIT子句來對全部UNION結果進行分類或限制,則應對單個地SELECT語句加圓括號,并把ORDER BY或LIMIT放到最后一個的后面。以下例子同時使用了這兩個子句:
代碼
(SELECT a FROM tbl_name WHERE a=10 AND B=1)UNION(SELECT a FROM tbl_name WHERE a=11 AND B=2)ORDER BY a LIMIT 10;
(如果想要實現分頁的話可以這樣處理 將兩個查詢的結果集當作是一個大的結果集處理然后再對此大的結果集進行LIMIT處理即可實現?。┖煤煤?~!
(SELECT a FROM tbl_name WHERE a=10 AND B=1)MySQLUNION(SELECT a FROM tbl_name WHERE a=11 AND B=2)ORDER BY a LIMIT 10;
這種ORDER BY不能使用包括表名稱(也就是,采用tbl_name.col_name格式的名稱)列引用。可以在第一個SELECT語句中提供一個列別名,并在 ORDER BY中參閱別名,或使用列位置在ORDER BY中參閱列。(首選采用別名,因為不建議使用列位置。)
另外,如果帶分類的一列有別名,則ORDER BY子句必須引用別名,而不能引用列名稱。以下語句中的第一個語句必須運行,但是第二個會運行失敗,出現在'order clause'中有未知列'a'的錯誤:
代碼
復制代碼 代碼如下:

(SELECT a AS b FROM t) UNION (SELECT ...) ORDER BY b;
(SELECT a AS b FROM t) UNION (SELECT ...) ORDER BY a;
To apply ORDER BY or LIMIT to an individual SELECT,
place the clause inside the parentheses that enclose the SELECT:
(SELECT a AS b FROM t) UNION (SELECT ...) ORDER BY b;
(SELECT a AS b FROM t) UNION (SELECT ...) ORDER BY a;
To apply ORDER BY or LIMIT to an individual SELECT,
place the clause inside the parentheses that enclose the SELECT:

為了對單個SELECT使用ORDER BY或LIMIT,應把子句放入圓括號中。圓括號包含了SELECT:
代碼
復制代碼 代碼如下:

(SELECT a FROM tbl_name WHERE a=10 AND B=1 ORDER BY a LIMIT 10)
UNION(SELECT a FROM tbl_name WHERE a=11 AND B=2 ORDER BY a LIMIT 10);
(SELECT a FROM tbl_name WHERE a=10 AND B=1 ORDER BY a LIMIT 10)
UNION(SELECT a FROM tbl_name WHERE a=11 AND B=2 ORDER BY a LIMIT 10);

二 實例擴展
MySQLunion可以對同一個表的兩次查詢聯合起來. 這樣做的益處也非常明顯, 比如在blog應用中, 可以利用一條sql語句實現置頂blog和普通blog的分頁顯示.
代碼
復制代碼 代碼如下:

(
SELECT *
FROM `blog`
WHERE top=1
ORDER BY created DESC
)
UNION (
SELECT *
FROM `blog`
WHERE top = 0
ORDER BY created DESC
) LIMIT 2 , 3

以上的相關內容就是對MySQLunion語法的介紹,望你能有所收獲。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 绥阳县| 定兴县| 乌兰察布市| 抚顺市| 淳安县| 定西市| 清河县| 涡阳县| 新建县| 拉孜县| 孟连| 久治县| 墨玉县| 巴青县| 德保县| 东兴市| 通化市| 甘谷县| 平舆县| 陇南市| 武强县| 福贡县| 新丰县| 天祝| 道孚县| 靖宇县| 武安市| 精河县| 谢通门县| 禄丰县| 墨江| 定日县| 晋江市| 建湖县| 五峰| 武安市| 体育| 呼伦贝尔市| 蒙阴县| 汕尾市| 合川市|