-
例子:查看全部
-
MySQL 使用join優(yōu)化聚合子查詢: user1表 ---------------------------------- - id ---- user_name --- over ----- ---------------------------------- user_kills表 --------------------------------------- - id -- user_id -- kills -- timestr---- --------------------------------------- 問題:如何查詢出四人組中打怪最多的日期? 一般思路:聚合子查詢 select a.user_name , b.timestr , b.kills from user1 a join user_kills b on a.id = b.user_id where b.kills = (select MAX(c.kills) from user_kills c where c.user_id = b.user_id) 優(yōu)化方法: select a.user_name , b.timestr , b.kills from user1 a join user_kills b on a.id = b.user_id join user_kills c on c.user_id = b.user_id group by a.user_name , b.timestr , b.kills having b.kills = MAX(c.kills)查看全部
-
join優(yōu)化子查詢技巧: 一般子查詢寫法:(數(shù)據(jù)小時(shí),沒有多大影響,如果數(shù)據(jù)量大時(shí),則要消耗大量的查詢) select a.user_name , a.voer , (select over from user2 where a.user_name = b,user_name) as over2 from user1 a; join優(yōu)化后的寫法: select a.user_name , a.over , b.over from user1 a left join user2 b on a.user_name = b.user_name查看全部
-
MySQL 聯(lián)合更新技巧: 如題:將user1表中user_name與user2表中user_name相同的user1表的over替換成user2表中的over值? 一般正常思路: update user1 set over='齊天大圣' where user1.user_name in( select b.user_name from user1 a left join user2 b on a.user_name = b.user_name); 這樣去執(zhí)行思路上是對的,但是MySQL不支持這種機(jī)制 解決方法: update user1 a join ( select b.user_name from user1 a join user2 b on a.user_name = b.user_name ) b on a.user_name = b.user_name set a.over='齊天大圣'查看全部
-
交叉連接(笛卡爾積連接):A*B,其實(shí)就是將兩個表進(jìn)行相乘,一般項(xiàng)目中很少用到笛卡爾積連接 select * from user1 a cross join user2 b; 如上語句:如果user1表中有3條記錄,user2中有4條記錄,則結(jié)果就有12條記錄查看全部
-
MySQL 中 不會支持 full join 解決方法:采用左連接和右連接結(jié)合+ union all 方法來取得兩表的合集 select a.user_name , a.over , b.over <-這里是指所選擇顯示的項(xiàng) from user1 a left join user2 b on a.user_name = b.user_name <-這里是指篩選條件 union all <-連接反向查詢語句 select b.user_name , b.over, a.over <-這里是指所選擇顯示的項(xiàng) from user1 a right join user2 b on a.user_name = b.user_name <-這里是指篩選條件查看全部
-
右外連接:left outer join 查詢出A表中的key和B表中的key相等的部分 ,而結(jié)果查詢出了B表中所有的數(shù)據(jù)和B表和A表相同的部分 select <select_list> from tableA A right join TableB B on A.key=B.key 查詢出A表中的key和B表中的key相等的部分,而結(jié)果查詢出了B表中有的,而A表中沒有的數(shù)據(jù) select <select_list> from tableA A right join TableB B on A.key=B.key where B.key IS NULL查看全部
-
左外連接:left outer join 查詢出A表中的key和B表中的key相等的部分 ,而結(jié)果查詢出了A表中所有的數(shù)據(jù)和B表和A表相同的部分 select <select_list> from tableA A left join TableB B on A.key=B.key 查詢出A表中的key和B表中的key相等的部分,而結(jié)果查詢出了A表中有的,而B表中沒有的數(shù)據(jù) select <select_list> from tableA A left join TableB B on A.key=B.key where B.key IS NULL查看全部
-
join從句得類型:內(nèi)鏈接(inner) 全外連接(full outer) 左外連接(left outer) 右外連接(right outer) 交叉鏈接(cross) 內(nèi)連接inner join: select a.user_name,a.over,b.over from user1 a join user2 b on a.user_name=b.user_name;公共部分查看全部
-
SQL的join連接類型查看全部
-
SQL語句類型查看全部
-
inner join查看全部
-
JOIN語句的類型查看全部
-
select, insert, update, delete查看全部
-
常見sql語句類型查看全部
舉報(bào)
0/150
提交
取消