国产99久久精品_欧美日本韩国一区二区_激情小说综合网_欧美一级二级视频_午夜av电影_日本久久精品视频

最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當前位置: 首頁 - 科技 - 知識百科 - 正文

mysql左,右,內連接

來源:懂視網 責編:小采 時間:2020-11-09 09:13:54
文檔

mysql左,右,內連接

mysql左,右,內連接:左右連接全相乘方法(效率很低)mysql> select * from test10; +------+-------+ | id | sname | +------+-------+ | 1 | 云彩 | | 2 | 月亮 | | 3 | 星星 | +------+-------+3 rows in set (0.00 sec)m
推薦度:
導讀mysql左,右,內連接:左右連接全相乘方法(效率很低)mysql> select * from test10; +------+-------+ | id | sname | +------+-------+ | 1 | 云彩 | | 2 | 月亮 | | 3 | 星星 | +------+-------+3 rows in set (0.00 sec)m

左右連接

全相乘方法(效率很低)

mysql> select * from test10;
+------+-------+
| id | sname |
+------+-------+
| 1 | 云彩 | 
| 2 | 月亮 | 
| 3 | 星星 | 
+------+-------+

3 rows in set (0.00 sec)

mysql> select * from test11;
+--------+-------+
| cat_id | cname |
+--------+-------+
| 95 | 猴子 | 
| 96 | 老虎 | 
+--------+-------+

2 rows in set (0.00 sec)

數據庫中實現兩表*的效果

mysql> select * from test10,test11;
+------+-------+--------+-------+
| id | sname | cat_id | cname |
+------+-------+--------+-------+
| 1 | 云彩 | 95 | 猴子 | 
| 1 | 云彩 | 96 | 老虎 | 
| 2 | 月亮 | 95 | 猴子 | 
| 2 | 月亮 | 96 | 老虎 | 
| 3 | 星星 | 95 | 猴子 | 
| 3 | 星星 | 96 | 老虎 | 
+------+-------+--------+-------+

6 rows in set (0.03 sec)

分析:
test10看成集合有三個元素
test11看成集合有兩個元素

test10*test11得到新集合是有六個元素
行 兩個表行數相乘
列 兩個表列數相加(可以重復)

多表查詢時候列名重復的情況時候,需要明確指出取得是那個表

mysql> select goods_id,minigoods.cat_id,goods_name,category.cat_id,cat_name from minigoods,category limit 3;
+----------+--------+--------------------+--------+----------+
| goods_id | cat_id | goods_name | cat_id | cat_name |
+----------+--------+--------------------+--------+----------+
| 1 | 4 | KD876 | 1 | 手機類型 | 
| 4 | 8 | htcN85原裝充電器 | 1 | 手機類型 | 
| 3 | 8 | 諾基亞原裝5800耳機 | 1 | 手機類型 | 
+----------+--------+--------------------+--------+----------+

技巧 :創建一個同樣結構的表 create table [新表名] like [舊表名]
create table minigoods like goods;

復制一部分表的內容

mysql> insert into minigoods
-> select * from goods limit 3;

取得有意義的兩個表的對應 minigoods.cat_id=category.cat_id

mysql> select goods_id,minigoods.cat_id,goods_name,category.cat_id,cat_name from minigoods,category where minigoods.cat_id=category.cat_id ;
+----------+--------+--------------------+--------+----------+
| goods_id | cat_id | goods_name | cat_id | cat_name |
+----------+--------+--------------------+--------+----------+
| 1 | 4 | KD876 | 4 | 3G手機 | 
| 4 | 8 | htcN85原裝充電器 | 8 | 耳機 | 
| 3 | 8 | 諾基亞原裝5800耳機 | 8 | 耳機 | 
+----------+--------+--------------------+--------+----------+

3 rows in set (0.00 sec)

左連接語法
a表在左,不動
b表在右,動
a表和b表通過一個關系(自己設定),來篩選a所需要的b的行

a left join b on [條件] ----條件為真,取出b的行

a left join b on [條件] 結果集也可以看成表(假設為c表),可以對其再查詢

mysql> select goods_id,goods_name,cat_name 
-> from
-> (minigoods left join category on minigoods.cat_id=category.cat_id); 
+----------+--------------------+----------+
| goods_id | goods_name | cat_name |
+----------+--------------------+----------+
| 1 | KD876 | 3G手機 | 
| 4 | htcN85原裝充電器 | 耳機 | 
| 3 | 諾基亞原裝5800耳機 | 耳機 | 
+----------+--------------------+----------+

[minigoods left join category on minigoods.cat_id=category.cat_id 看做c表]
驗證:就是后面依然可以使用where 等等過濾條件

mysql> select goods_id,goods_name,cat_name from 
(minigoods left join category on minigoods.cat_id=category.cat_id )
where 1 order by goods_id desc limit 2; 
+----------+--------------------+----------+
| goods_id | goods_name | cat_name |
+----------+--------------------+----------+
| 4 | htcN85原裝充電器 | 耳機 | 
| 3 | 諾基亞原裝5800耳機 | 耳機 | 
+----------+--------------------+----------+

2 rows in set (0.00 sec)

可以多張表左連接,就是把結果看成表
看做一張表

{{a left join b on [條件]} left join c on [條件]} 
mysql> select goods.goods_id,goods.goods_name,goods.cat_id,cat_name
-> from
-> minigoods left join category on minigoods.cat_id=category.cat_id
-> left join goods on minigoods.cat_id=4 limit 4;
+----------+--------------------+--------+----------+
| goods_id | goods_name | cat_id | cat_name |
+----------+--------------------+--------+----------+
| 1 | KD876 | 4 | 3G手機 | 
| 4 | htcN85原裝充電器 | 8 | 3G手機 | 
| 3 | 諾基亞原裝5800耳機 | 8 | 3G手機 | 
| 5 | 索愛原裝M2卡讀卡器 | 11 | 3G手機 | 
+----------+--------------------+--------+----------+

左右連接的區別===================================================================================================

a left join b on 意思是查詢的時候以a為基準查詢
a right join b on 意思是查詢的時候以b為基準查詢

a left join b on 等同于 b right join a (都是以a為基準查詢)

技巧:處于移植兼容性和理解上來說,最好一律使用左連接實現

create table boy(
bname varchar(20),
other char(1)
)engine myisam charset utf8;
insert into boy
values
('屌絲','A'),
('李四','B'),
('王五','C'),
('高富帥','D'),
('鄭七','E');
create table girl(
gname varchar(20),
other char(1)
)engine myisam charset utf8;
insert into girl
values
('空姐','B'),
('大S','C'),
('阿嬌','D'),
('張柏芝','D'),
('林黛玉','E'),
('寶釵','F');

取出所有男生的配偶(左連接)

select boy.*,girl.* from
boy left join girl on
boy.other=girl.other;
+--------+-------+--------+-------+
| bname | other | gname | other |
+--------+-------+--------+-------+
| 屌絲 | A | NULL | NULL | 
| 李四 | B | 空姐 | B | 
| 王五 | C | 大S | C | 
| 高富帥 | D | 阿嬌 | D | 
| 高富帥 | D | 張柏芝 | D | 
| 鄭七 | E | 林黛玉 | E | 
+--------+-------+--------+-------+

取出所有女生的配偶(左連接)

mysql> select girl.*,boy.* from
-> girl left join boy on 
-> boy.other=girl.other;
+--------+-------+--------+-------+
| gname | other | bname | other |
+--------+-------+--------+-------+
| 空姐 | B | 李四 | B | 
| 大S | C | 王五 | C | 
| 阿嬌 | D | 高富帥 | D | 
| 張柏芝 | D | 高富帥 | D | 
| 林黛玉 | E | 鄭七 | E | 
| 寶釵 | F | NULL | NULL | 
+--------+-------+--------+-------+

取出所有女生的配偶(右連接,和上面左連接一致)

mysql> select girl.* ,boy.* from
-> boy right join girl on
-> boy.other=girl.other;
+--------+-------+--------+-------+
| gname | other | bname | other |
+--------+-------+--------+-------+
| 空姐 | B | 李四 | B | 
| 大S | C | 王五 | C | 
| 阿嬌 | D | 高富帥 | D | 
| 張柏芝 | D | 高富帥 | D | 
| 林黛玉 | E | 鄭七 | E | 
| 寶釵 | F | NULL | NULL | 
+--------+-------+--------+-------+

內連接===================================================================================================

取出有配偶的

select girl.*,boy.* from
boy inner join girl on 
boy.other=girl.other;
+--------+-------+--------+-------+
| gname | other | bname | other |
+--------+-------+--------+-------+
| 空姐 | B | 李四 | B | 
| 大S | C | 王五 | C | 
| 阿嬌 | D | 高富帥 | D | 
| 張柏芝 | D | 高富帥 | D | 
| 林黛玉 | E | 鄭七 | E | 
+--------+-------+--------+-------+

內連接是左右連接的交集
(外連接是左右連接的并集,mysql不支持)可以使用用union實現

左連接應用===================================================================================================

create table match_t(
match_id int primary key auto_increment,
host_team_id int,
guest_team_id int,
match_result varchar(20),
match_time date
)engine myisam charset utf8;
insert into match_t
values
(1,1,2,'2:0','2006-05-21'),
(2,2,3,'1:2','2006-06-21'),
(3,3,1,'2:5','2006-07-21'),
(4,1,1,'3:2','2006-08-21');
create table team_t(
team_id int primary key auto_increment,
team_name varchar(20)
)engine myisam charset utf8;
insert into team_t
values
(1,'恒大'),
(2,'國安'),
(3,'申花'),
(4,'大連');
mysql> select * from match_t;
+----------+--------------+---------------+--------------+------------+
| match_id | host_team_id | guest_team_id | match_result | match_time |
+----------+--------------+---------------+--------------+------------+
| 1 | 1 | 2 | 2:0 | 2006-05-21 | 
| 2 | 2 | 3 | 1:2 | 2006-06-21 | 
| 3 | 3 | 1 | 2:5 | 2006-07-21 | 
| 4 | 4 | 1 | 3:2 | 2006-08-21 | 
+----------+--------------+---------------+--------------+------------+
mysql> select * from team_t;
+---------+-----------+
| team_id | team_name |
+---------+-----------+
| 1 | 恒大 | 
| 2 | 國安 | 
| 3 | 申花 | 
| 4 | 大連 | 
+---------+-----------+

技巧 :善與給表其別名

2006-06-21日期之后 把表中對戰換成隊名

select host_t.team_name,guest_t.team_name,match_result,match_time from
match_t left join (team_t as host_t) on match_t.host_team_id=host_t.team_id
left join (team_t as guest_t) on match_t.guest_team_id=guest_t.team_id
where match_time>='2006-06-21';
+--------------+-----------+---------------+-----------+--------------+------------+
| host_team_id | team_name | guest_team_id | team_name | match_result | match_time |
+--------------+-----------+---------------+-----------+--------------+------------+
| 1 | 恒大 | 2 | 國安 | 2:0 | 2006-05-21 | 
| 2 | 國安 | 3 | 申花 | 1:2 | 2006-06-21 | 
| 3 | 申花 | 1 | 恒大 | 2:5 | 2006-07-21 | 
| 4 | 大連 | 1 | 恒大 | 3:2 | 2006-08-21 | 
+--------------+-----------+---------------+-----------+--------------+------------+

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

mysql左,右,內連接

mysql左,右,內連接:左右連接全相乘方法(效率很低)mysql> select * from test10; +------+-------+ | id | sname | +------+-------+ | 1 | 云彩 | | 2 | 月亮 | | 3 | 星星 | +------+-------+3 rows in set (0.00 sec)m
推薦度:
標簽: 連接 mysql 內連接
  • 熱門焦點

最新推薦

猜你喜歡

熱門推薦

專題
Top
主站蜘蛛池模板: 免费国产一级 | 免费精品国产 | 黄网站免费在线观看 | 中文国产成人精品少久久 | 免费观看黄色网址 | 视频二区 素人 欧美 日韩 | 国产精品成久久久久三级 | 日韩在线无 | 亚洲欧美日韩在线2020 | 伊人精品成人久久综合欧美 | 中文亚洲欧美日韩无线码 | 一区在线观看 | 青青伊人91久久福利精品 | 日韩一区二区三区在线 | 么公的又大又深又硬想要 | 午夜视频免费观看 | 欧美成人精品一区二区三区 | 日韩视频一区二区在线观看 | 日韩精品一区二区三区在线观看l | 欧美日韩亚洲高清不卡一区二区三区 | 国产一区二区不卡 | 国产成人影院 | 国产精品成人麻豆专区 | 国产精品女同一区二区久久 | 亚洲一级二级三级 | 欧美日本免费一区二区三区 | 国产一级久久久久久毛片 | 国产精品资源在线播放 | 欧美综合在线视频 | 国产不卡在线看 | 亚洲三级电影在线 | 无毛片| 国产成人久久精品亚洲小说 | 亚洲成人综合在线 | 亚洲 欧美 日韩 综合 | 亚欧成人毛片一区二区三区四区 | 欧美日韩亚洲电影天堂 | 97伊人久久 | 午夜视频在线免费观看 | 国内精品91久久久久 | 亚洲另类色图 |