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

歡迎訪問 生活随笔!

生活随笔

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

数据库

mysql查询数据教程_MySQL 查询数据

發布時間:2025/4/17 数据库 56 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql查询数据教程_MySQL 查询数据 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

sql 語句的關聯查詢

左關聯: left join ... on ...

右關聯: right join... on ...

格式:

select 字段 from 表1 left join 表2 on 條件 (一般為表1與表2的關聯條件)

查詢用戶的所有訂單信息 :

user 用戶表

orders 訂單表

select * from user left join orders on user.id = orders.user_id

稍微復雜點 統計用戶的訂單數量 (需要分組,通過用戶的id)

select user.username,orders.id,count(*) from user right join orders on user.id = orders.user_id GROUP BY user.id;

mysql> select user.username,orders.id,count(*) from user right join orders on user.id = orders.user_id GROUP BY user.id;

+----------+----+----------+

| username | id | count(*) |

+----------+----+----------+

| 王五 | 3 | 2 |

| 張三 | 5 | 1 |

+----------+----+----------+

2 rows in set (0.07 sec)

這里顯示名為王五(id=3)的用戶有2個訂單 張三(id=5)1個訂單

這里是右關聯查詢,用右關聯查詢是有道理的, 因為左關聯和有關聯 是有差別的查詢,區別:left join on 左邊的表為主表 right join on 右邊的表為主表

這個統計訂單的查詢有一個問題 就是 用戶表中有用戶新信息,但是這個用戶沒有訂單信息

請看下面的查詢;

---------------------

單表查詢

---------------------

mysql> select * from user;

+----+----------+------------+------+----------+

| id | username | birthday | sex | address |

+----+----------+------------+------+----------+

| 1 | 王五 | 2017-11-25 | 3 | 南陽 |

| 10 | 張三 | 2014-07-10 | 1 | 北京市 |

| 16 | 張小明 | NULL | 1 | 河南鄭州 |

| 22 | 陳小明 | NULL | 1 | 河南鄭州 |

| 24 | 張三豐 | NULL | 1 | 河南鄭州 |

| 25 | 陳小明 | NULL | 1 | 河南鄭州 |

| 26 | 王五 | NULL | NULL | NULL |

| 29 | 小黑 | 2017-11-26 | NULL | NULL |

| 30 | 抖森 | 2017-11-25 | 1 | 山村 |

+----+----------+------------+------+----------+

9 rows in set (0.03 sec)

mysql> select * from orders;

+----+---------+---------+---------------------+------+

| id | user_id | number | createtime | note |

+----+---------+---------+---------------------+------+

| 3 | 1 | 1000010 | 2015-02-04 13:22:35 | NULL |

| 4 | 1 | 1000011 | 2015-02-03 13:22:41 | NULL |

| 5 | 10 | 1000012 | 2015-02-12 16:13:23 | NULL |

+----+---------+---------+---------------------+------+

3 rows in set (0.03 sec)

--------------------------

關聯查詢

-------------------------

左關聯

------------------------

mysql> select user.* ,orders.number from user left join orders on user.id = orders.user_id;

+----+----------+------------+------+----------+---------+

| id | username | birthday | sex | address | number |

+----+----------+------------+------+----------+---------+

| 1 | 王五 | 2017-11-25 | 3 | 南陽 | 1000010 |

| 1 | 王五 | 2017-11-25 | 3 | 南陽 | 1000011 |

| 10 | 張三 | 2014-07-10 | 1 | 北京市 | 1000012 |

| 16 | 張小明 | NULL | 1 | 河南鄭州 | NULL |

| 22 | 陳小明 | NULL | 1 | 河南鄭州 | NULL |

| 24 | 張三豐 | NULL | 1 | 河南鄭州 | NULL |

| 25 | 陳小明 | NULL | 1 | 河南鄭州 | NULL |

| 26 | 王五 | NULL | NULL | NULL | NULL |

| 29 | 小黑 | 2017-11-26 | NULL | NULL | NULL |

| 30 | 抖森 | 2017-11-25 | 1 | 山村 | NULL |

+----+----------+------------+------+----------+---------+

10 rows in set (0.04 sec)

-----------------------------

右關聯

-----------------------------

mysql> select user.* ,orders.number from user right join orders on user.id = orders.user_id;

+----+----------+------------+-----+---------+---------+

| id | username | birthday | sex | address | number |

+----+----------+------------+-----+---------+---------+

| 1 | 王五 | 2017-11-25 | 3 | 南陽 | 1000010 |

| 1 | 王五 | 2017-11-25 | 3 | 南陽 | 1000011 |

| 10 | 張三 | 2014-07-10 | 1 | 北京市 | 1000012 |

+----+----------+------------+-----+---------+---------+

3 rows in set (0.05 sec)

很明顯此處錯誤的選擇left會導致查出不必要的數據,可以說是垃圾信息,因為是要查出訂單信息(攜帶用戶信息)沒有訂單的用戶就不必要查詢出來。

Narule

Narule

jun***r33@sina.com2年前 (2018-09-11)

總結

以上是生活随笔為你收集整理的mysql查询数据教程_MySQL 查询数据的全部內容,希望文章能夠幫你解決所遇到的問題。

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