标签:style blog class code tar color
这几天由于工作的需要,写了一个业务逻辑较复杂的存储过程,其中多次用到了JOIN、LEFT JOIN、RIGHT JOIN在处理表之间的逻辑的作用被渲染的淋漓尽致。说明一下,之前少处理数据库后台的经验,特别是没有好好的研究SQL的知识细节。不过也简单的学习了,自以为看明白了。就懂了。现在想来那时就是浅尝辄止。用了之后,对它的理解更深了。现在及时总结下。以备忘和日后查看。下面示例的demo代码是来自W3School。接下来直入主题。
JOIN
1 SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo 2 FROM Persons 3 INNER JOIN Orders 4 ON Persons.Id_P = Orders.Id_P 5 ORDER BY Persons.LastName
下面是查询结果:
LEFT JOIN
1 SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo 2 FROM Persons 3 LEFT JOIN Orders 4 ON Persons.Id_P=Orders.Id_P 5 ORDER BY Persons.LastName
下面是查询结果:
RIGHT JOIN
1 SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo 2 FROM Persons 3 RIGHT JOIN Orders 4 ON Persons.Id_P=Orders.Id_P 5 ORDER BY Persons.LastName
下面是查询结果:
FULL JOIN
1 SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo 2 FROM Persons 3 FULL JOIN Orders 4 ON Persons.Id_P=Orders.Id_P 5 ORDER BY Persons.LastName
下面是查询结果:
从上面的这张查询结果,我们可以看到它们几个之间的关系(我觉得W3School上面的这个例子十分经典,它顺着一条线下来,很清晰、很明了)。
1.取上面4条数据就是A [INNER]JOIN B
2.取上面的5条数据就是A LEFT JOIN B
3.取上面的4条和最后一条数据就是 A RGHT JOIN B
4.将这些数据联合起来计时A FULL JOIN B.
5.如果现在有一个需求是:取出A中的数据必须在B中存在的,就是上面例子中的RIGHT JOIN 语句后面加一个条件: WHERE Persons.Id_P IS NOT NULL
6.如果现在有一个需求是:取出B中的数据必须在A中存在的,就是上面例子中的LEFT JOIN 语句后面加一个条件: WHERE Orders.Id_P IS NOT NULL
呵呵,写得不好,希望各位朋友指正。我好学习进步。
T-SQL之JOIN关键字详解,布布扣,bubuko.com
标签:style blog class code tar color
原文地址:http://www.cnblogs.com/fengchengjushi/p/3705533.html