首页 > 代码库 > T-SQL之JOIN关键字详解
T-SQL之JOIN关键字详解
这几天由于工作的需要,写了一个业务逻辑较复杂的存储过程,其中多次用到了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
呵呵,写得不好,希望各位朋友指正。我好学习进步。
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。