MYSQL中的高階查詢

2022-08-05 04:45:14 字數 1422 閱讀 4372

找到雙人間的**

根據第一步找到的**作為查詢條件去查滿足條件的房屋型別,利用where字句

子查詢是乙個巢狀在 select、insert、update 或 delete 語句或其他子查詢中的查詢

子查詢在where語句中的一般用法:

將子查詢和比較運算子聯合使用

注意:子查詢返回的資料列有且僅能有一列;若判斷條件不為in的時候,則子查詢只能返回有且只有一行資料,若是in的話子查詢可以返回多行資料。

子查詢的執行過程是:

首先,執行小括號中的子查詢,返回的結果是所有來自子查詢的結果

其次,才開始執行外圍的父查詢,返回查詢的最終結果

第一步:查出**在100到300之間的房屋型別

第二部:依據第一步得到的結果作為條件,在房間表中查出這些房間型別的房屋有哪些?

在資料庫應用中,若需要從多張表中通過某一些組合條件查詢出我們需要的結果,此時就需要表連線查詢。

在mysql中,連線查詢包括:

inner join(內連線,或等值連線):獲取兩個表中字段匹配關係的記錄。

left join(左連線):獲取左表所有記錄,即使右表沒有對應匹配的記錄。

right join(右連線): 與 left join 相反,用於獲取右表所有記錄,即使左表沒有對應匹配的記錄。

查詢結果是左右連線的交集,【即左右連線的結果去除null項後的並集(去除了重複項)】

語法為:select 欄位1,欄位2 from 表1

inner join 表2  on 表1.欄位1  =  表2.欄位2  where 條件

等價於:

select 欄位1,欄位2 from 表1 , 表2

where表1.欄位1  =  表2.欄位2  and  條件

其中on之後的條件為表1和表2關聯的條件。

問題1:查詢所有狀態為正常可用的房屋(房屋號、型別名稱、狀態名稱,床位,**)

問題2:查詢出所有狀態為正常可用且**低於500的房屋

以左表為準,去右表找資料,如果沒有匹配的資料,則以null補空位,所以輸出結果數》=左表原資料數

左右表區分:在語句前面的為左表,後面的為右表。

語法:select n1,n2,n3 from ta left join tb on ta.n1= ta.n2 [這裡on後面的表示式,不一定為=,也可以》,《等算術、邏輯運算子]【連線完成後,可以當成一張新表來看待,運用where等查詢】

問題:列出所有房屋的完整資訊,資訊包括:房屋資訊和該房屋目前住的人的資訊。

a left join b 等價於 b right join a

推薦使用左連線代替右連線

mysql 高階 查詢 MYSQL中的高階查詢

1.1.子查詢 1.1.1.在房屋型別中,如何找出比雙人間貴的所有房屋型別?找到雙人間的 根據第一步找到的 作為查詢條件去查滿足條件的房屋型別,利用where字句 子查詢是乙個巢狀在 select insert update 或 delete 語句或其他子查詢中的查詢 子查詢在where語句中的一般...

mysql高階查詢in MySQL高階查詢(一)

in 子查詢 巢狀查詢 重點是思路 為什麼要用in?in 在數值上相當於 但是它可以查詢到更多的符合條件的結果,等於號只可以查詢乙個結果 question 有兩種方法 第一種 使用子查詢替換表連線 使用 inner join 將表與表之間聯動,再將實現條件依次寫出來 第二種 採用子查詢 在where...

Mysql高階查詢

if expr1,expr2,expr3 如果 expr1 是true 則 if 的返回值為expr2 否則返回值則為 expr3。如 select if status 0 and status promotion 1,1,2 as status from my table ifnull expr1...