首頁 >資料庫 >mysql教程 >mysql子查詢怎麼用

mysql子查詢怎麼用

王林
王林轉載
2023-06-02 10:31:051912瀏覽

出現在其他語句中的select 語句,稱為子查詢或內查詢;外部的查詢語句,稱為主查詢或外查詢. 

-- 子查询
-- 查询的条件来自于另一查询的结果
SELECT * FROM t_user WHERE number=(SELECT number FROM t_user WHERE NAME='张三')

當然子查詢也有類型,分為以下幾種: 

  • 標量子查詢(結果集只有一行一列)

  • 列子查詢(結果集只有一列多行)

  • 行子查詢(結果集有一行多列)(較少)

  • #表子查詢(結果集一般為多行多列)

這裡我們以新建t_user表為例

mysql子查詢怎麼用 

要注意的是: 這裡的分類是根據內嵌子查詢的結果來分的例如上述的sql語句就是標量子查詢

mysql子查詢怎麼用

子查詢結果只有一行一列

接著我們根據子查詢在sql語句中出現的位置來討論: 

select後面:僅支援標量子查詢

-- select语句后面,将t1查询出的结果作为子查询的条件
SELECT t1.number,
  (SELECT NAME FROM t_user t2 WHERE t1.name = t2.name)
FROM t_user t1

查詢結果: 

mysql子查詢怎麼用

insert into , update和delete後面:

insert into用來為表中插入資料, 所以後面是可以跟列子查詢和表子查詢的

-- insert into 后跟子查询
INSERT INTO t_user(number,NAME,age,birthday,weight,sex,opertime)
       SELECT number,NAME,age,birthday,weight,sex,NOW() FROM t_user WHERE id=3

這裡要注意的是update與delete

#UPDATE t_user SET NAME='abc' WHERE number=(SELECT number FROM t_user WHERE weight=110)

DELETE FROM t_user WHERE id=(SELECT id FROM t_user WHERE id=7)

##上述這兩個sql , mysql是不允許我們這樣去執行的: 

mysql子查詢怎麼用

#mysql的底層機制使得我們在操作此表的時候是不能去改變此表結構的 

也就是說,子查詢不能查詢目前正在操作的表

where 後面: 可跟標量子查詢, 列子查詢, 行子查詢

#

-- where后跟标量子查询
-- 查询体重最大的人信息
SELECT * FROM t_user WHERE weight=(SELECT MAX(weight) FROM t_user)
-- where后跟列子查询
-- 查询体重大于或等于130的人信息
SELECT * FROM t_user WHERE weight IN (SELECT weight FROM t_user WHERE weight>=130)
-- where后跟行子查询
-- 查询年龄最大,体重最大的人的信息
SELECT * FROM t_user 
     WHERE (age,weight) = (SELECT MAX(age),MAX(weight) FROM t_user)

from 後面: 可跟表子查詢

表字查詢的結果是多行多列, 也就是一個表

-- 表子查询
SELECT t.age FROM (SELECT age,weight FROM t_user)t

結果:

mysql子查詢怎麼用

以上是mysql子查詢怎麼用的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:yisu.com。如有侵權,請聯絡admin@php.cn刪除