Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit a169e9b

Browse files
join优化
1 parent 441ceb2 commit a169e9b

File tree

1 file changed

+31
-0
lines changed

1 file changed

+31
-0
lines changed

‎mysql开发技巧一/join优化‎

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,37 @@ SELECT select_sxpressions FROM TABLE A RIGHT JOIN TABLE B ON A.key=B.key WHERE
4040
SELECT select_sxpressions FROM TABLE A RIGHT JOIN TABLE B ON A.key=B.key WHERE A.key IS NOT NULL;
4141
表A与表B的交集,相当于INNER JOIN。
4242

43+
********************************************************************************
44+
全连接
45+
46+
FULL JOIN:是LEFT OUTER JOIN和RIGHT OUTER JOIN的合集。显示出两张表中的所有数据,
47+
当一张表的连接谓词无法满足时,则另一张表的字段在该表中为NULL。
48+
49+
MySQL不支持FULL JOIN
50+
解决方法:
51+
通过UNION将左连接和右连接的结果合并
52+
SELECT select_expressions
53+
FROM TABLE A LEFT JOIN TABLE B ON A.key=B.key
54+
UNION ALL
55+
SELECT select_expressions
56+
FROM TABLE A RIGHT JOIN TABLE B ON A.key=B.key;
57+
58+
UNION会自动删除重复项,刷选出部分字段的时候要注意了,如果刷选出来的两个字段的值完全相同就会剩下一个。
59+
UNION ALL 和 UNION 不同之处在于 UNION ALL 会将左右两个查询的结果的所有的资料都列出来,无论资料值有无重复。
60+
61+
********************************************************************************
62+
63+
CROSS JOIN:笛卡尔连接,如果A和B是两个集合,它们的交叉连接就记为A X B。
64+
一个表的每个记录与另一个表的所有记录进行连接,形成A.length*B.length个数据项的表。(无需提供ON)
65+
66+
SELECT select_expressions FROM TABLE A CROSS JOIN TABLE B;
67+
68+
69+
70+
71+
72+
73+
4374

4475

4576

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /