日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

MySQL子查询嵌套查询

發布時間:2024/4/18 数据库 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MySQL子查询嵌套查询 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

子查詢:嵌套在其他查詢中的查詢。

有三張表分別如下:

customers: 存儲顧客信息

orderitems:只存儲訂單信息,無客戶信息

orders:存儲訂單號和顧客id

注意:一般在子查詢中,程序先運行在嵌套在最內層的語句,再運行外層。因此在寫子查詢語句時,可以先測試下內層的子查詢語句是否輸出了想要的內容,再一層層往外測試,增加子查詢正確率。否則多層的嵌套使語句可讀性很低。

子查詢訓練:

訓練1:

查詢買了商品為’TNT2’的顧客信息

子查詢中涉及3張表的訂單。因此分三步,1. 在orderitems里找出TNT2的訂單號;2. 在orders里找出第一步找出的訂單號對應的客戶id;3. 在customers中找出第二步對應客戶的所有信息。

1. 在orderitems里找出TNT2的訂單號

SELECT order_num FROM orderitems

WHERE prod_id='TNT2';

2. 在orders里找出第一步找出的訂單號對應的客戶id

SELECT cust_id FROM orders

WHERE order_num

IN (SELECT order_num FROM orderitems WHERE prod_id='TNT2');

3. 在customers中找出第二步對應客戶的所有信息

SELECT * FROM customers

WHERE cust_id

IN (SELECT cust_id FROM orders WHERE order_num IN

(SELECT order_num FROM orderitems WHERE prod_id='TNT2'));

這樣就得到結果啦~

子查詢一般與IN操作符結合使用,也可用=><等。

另外,子查詢還可以用于計算字段。

訓練2:

如,想要查詢每個客戶的訂單數

分步思考:1. 查詢某個客戶的訂單數;2. 某個客戶改為所有客戶。

1. 查詢某個客戶的訂單數

SELECT COUNT(*) AS orders1 FROM orders WHERE cust_id =10001;

2. 某個客戶改為所有客戶

SELECT cust_name, cust_state,

(SELECT COUNT(*) FROM orders WHERE orders.cust_id=customers.cust_id)

AS orders1

FROM customers

ORDER BY cust_name;

注意:當多個表都擁有同樣的列名如cust_id時,一定要完全限定列名。

總結

以上是生活随笔為你收集整理的MySQL子查询嵌套查询的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。