聯合查詢(mysql)

2021-07-24 16:31:59 字數 983 閱讀 4164

mysql可以將多個查詢(多條select語句)的結果作為單個查詢結果集返回。

(實質是記錄上的拼接,是一種並操作)

基本有兩種情況:聯合相同表的查詢和聯合不同表的查詢。聯合相同表的查詢其實等價於某條具有多個where子句的select語句。

例子:

select name,id,age

from students

where age<=20

union

select name,id,age

from studnets

where id in (14,15);

等價於:

select name,id,age

from students

where age <= 20

or id in (14,15);

注意:1 union必須由兩條或兩條以上的select語句組成,語句之劍用關鍵字union分隔

(查詢結果的列標題為第乙個查詢語句的列標題)

2 union中的每個查詢必須包含相同的列,表示式或聚集函式(數量相同,型別相同或者可轉換)

3 列資料型別必須相容:型別不必完全相同,但必須是dbms可以隱含轉換的型別。

(在自動轉換時,對於數值型別,系統將低精度的資料型別轉換為高精度的資料型別。)

union預設在查詢結果中去除重複的行,如果想返回所有匹配行,使用union all

order by在乙個資料集合查詢裡也只能出現一次並且出現在最後。

因此,在聯合查詢裡,order by 要寫在最後乙個子查詢之後,並且,該排序是對整個聯合查詢出來的結果集排序的,並不是只對最後乙個子查詢排序(在union之後)

要在子句中使用 order by,即將select子句的結果先排序,然後再把這些子句查詢的結果進行集合。

在子句中使用 order by,由於優先順序問題,需要將整個子句加圓括號(),且必須與limit 結合使用:

mysql聯合查詢

有乙個前提很重要 就是兩個表中的對應字段應該是建立聯合關係且該鍵應唯一 在查詢該聯合建的時候要指明 表.欄位 1.select from 表a,表a子表 where表a.filecode 表a子表.filecodeand表a.id in select 表a子表 id from 表a子表 where ...

MySQL聯合查詢

1.select test.name,test2.name2 from test left join test2 on test.id test2.id 2.select test.name,test2.name2 from test right join test2 on test.id test...

mysql聯合查詢

mysql聯合查詢效率較高,以下例子來說明聯合查詢 內聯 左聯 右聯 全聯 的好處 t1表結構 使用者名稱,密碼 userid int usernamevarchar 20 passwordvarchar 20 1 jack jackpwd 2 owen owenpwd t2表結構 使用者名稱,積分...