-
INNER JOIN = A∩B LEFT OUTER JOIN = A 或 A - ( A∩B ) RIGHT OUTER JOIN = B 或 B - ( A∩B ) FULL JOIN = A∪B 或 ( A∪B ) - ( A∩B ) 【MYSQL 不支持 FULL JOIN ,可以使用 LEFT OUTER JOIN UNION ALL RIGHT OUTER JOIN】查看全部
-
SQL [ DDL TPL DCL DML ]查看全部
-
常見的sql語言類型 DDL數據定義語言 TPL事務處理語言 DCL數據控制語言 DML數據操作語言查看全部
-
結構化查詢語言查看全部
-
MySQL 使用join優化聚合子查詢: 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) 優化方法: 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優化子查詢技巧: 一般子查詢寫法:(數據小時,沒有多大影響,如果數據量大時,則要消耗大量的查詢) select a.user_name , a.voer , (select over from user2 where a.user_name = b,user_name) as over2 from user1 a; join優化后的寫法: select a.user_name , a.over , b.over from user1 a left join user2 b on a.user_name = b.user_name查看全部
-
MySQL 聯合更新技巧: 如題:將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); 這樣去執行思路上是對的,但是MySQL不支持這種機制 解決方法: 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='齊天大圣' 今天上班試了一下這個聯合跟新: 將ecshop中的users表和user_address表中的對應的user_address表的tel付給users表中的home_phone 代碼如下: # 聯合跟新 UPDATE gbsop_users a JOIN ( SELECT b.user_id,b.tel FROM gbsop_users a JOIN gbsop_user_address b ON a.user_id = b.user_id ) b ON a.user_id = b.user_id SET a.home_phone = b.tel查看全部
-
交叉連接(笛卡爾積連接):A*B,其實就是將兩個表進行相乘,一般項目中很少用到笛卡爾積連接 select * from user1 a cross join user2 b; 如上語句:如果user1表中有3條記錄,user2中有4條記錄,則結果就有12條記錄查看全部
-
MySQL 中 不會支持 full join 解決方法:采用左連接和右連接結合+ union all 方法來取得兩表的合集 select a.user_name , a.over , b.over from user1 a left join user2 b on a.user_name = b.user_name union all select b.user_name , b.over, a.over from user1 a right join user2 b on a.user_name = b.user_name查看全部
-
左外連接:left outer join 查詢出A表中的key和B表中的key相等的部分 ,而結果查詢出了A表中所有的數據和B表和A表相同的部分 select <select_list> from tableA A left join TableB B on A.key=B.key 查詢出A表中的key和B表中的key相等的部分,而結果查詢出了A表中有的,而B表中沒有的數據 select <select_list> from tableA A left join TableB B on A.key=B.key where B.key IS NULL查看全部
-
利用JOIN 優化聚合子查詢查看全部
-
利用JOIN 優化聚合子查詢查看全部
-
join類型查看全部
-
為什么還要學習SQL查看全部
-
DML查看全部
舉報
0/150
提交
取消