`
surfingForRest
  • 浏览: 145640 次
  • 性别: Icon_minigender_2
  • 来自: 大连
社区版块
存档分类
最新评论

第一次学习join on

阅读更多
资料来源:http://www.sql-tutorial.net/SQL-JOIN.asp


学后笔记(声明:不同的database可能不同):、

概述:
    join 有两种:inner join  和 outer join。如果join前面什么都不加,默认为inner join。

详述:
    1. inner join:比如 select a.Id,a.name,b.desc from A a join B b on a.Id=b.Id
语句会查出[除了在关联表B中没有关联关系]的A表中的所有数据,显然,如果没有一条关联记录,那么结果也是什么都查不到。

    2. outer join:又分两种--left join   和   right join
         (i) left <outer> join : select a.id, a.name,b.desc from A left join B b on a.Id=b.Id,会查出from后的表A所有的记录,而join后的表B,如果对应的b.desc无数据以空补。
         (ii) right <outer> join :select a.id,a.name,b.desc from A right join B b on a.id=b.id,和(i)相似,会查出所join后的表B所有的数据,而from后的表A对应的a.id,a.name无数据的话以空补。

分享到:
评论
3 楼 surfingForRest 2010-01-14  
xdw1516 写道
左连接 当A表一个记录对应B表多个记录,查询结果会也有多个记录。光是这个概念还不足以让人理解



说得是,“select a.id, a.name,b.desc from A left join B b on a.Id=b.Id”,我只从b.desc的无值处理上进行说明了。你的话,倒补充了我的表达上的不足。谢谢啦。


鉴于你的提示,我用具体的数据和图再补充下我的内容,也算不枉你的一番心意,哈哈。

具体例子,如下:

有表:visit  ,id是其主键,这条查询语句
select t.id from visit t where t.id=100034718;
得到的结果当然只有一条,值当然是100034718(之所以写出来,完全是为了严紧)。




另一表:visit_det,row_id是其主键,其外键为id(也就是visit表里的主键),我用
select t.id,t.pack from visit_det t where t.id=100034718;
,得到如下图的结果,



下面我用left join 来查下,
select t.id,d.pack from visit t left join visit_det d on d.id=t.id where t.id=100034718;
,结果如下图,



“一对多”的情况,查出的条娄是和多的个数一样,再加上我之前说的“(i) left <outer> join : select a.id, a.name,b.desc from A left join B b on a.Id=b.Id,会查出from后的表A所有的记录,而join后的表B,如果对应的b.desc无数据以空补。 ”

应该会完整一点了。
2 楼 xdw1516 2010-01-14  
左连接 当A表一个记录对应B表多个记录,查询结果会也有多个记录。光是这个概念还不足以让人理解
1 楼 xdw1516 2010-01-14  
学习了  谢谢

相关推荐

    关于SQL 中的inner join的使用

    这是因为,即使某个记录不符合第一个条件(市场部),但如果它符合第二个条件(年龄大于50岁),它仍然会被加入到结果集中。为了避免这种情况,我们需要更精确地定义连接条件。 #### 五、GROUP BY 和 HAVING 的应用...

    laravel高级的Join语法详解以及使用Join多个条件

    在这个例子中,我们创建了一个闭包,并将其作为`join`方法的第二个参数。闭包内部,我们调用了`on`方法两次,分别定义了两个连接条件。 如果需要在连接条件中加入逻辑运算,如`OR`,可以使用`orOn`方法: ```php DB...

    MySQL的LEFT JOIN表连接的进阶学习教程

    LEFT JOIN的主要特点是返回所有左表(即连接查询中的第一个表)的记录,即使在右表(第二个表)中没有匹配的记录。左表的每一行都会与右表的所有行进行匹配,如果右表中没有匹配项,则结果为NULL。 在描述中提到的...

    Ruby on Rail 基础知识 一张纸

    `: 替换第一次出现的匹配项。 - `sum`: 返回字符串中字符的总和。 - `swapcase!`: 交换大小写。 - `tr!`, `tr_s!`: 替换字符。 - `unpack`: 解包字符串。 - `upcase!`: 转换所有字符为大写。 - `upto`: 用于...

    高中名校高三英语第一次联考试题(含听力)(扫描版,含解析)新人教版 试题.doc

    15. **副词辨析**:第33题的"annually"表示每年一次,常用于描述定期发生的事件。 16. **虚拟语气**:第34题使用了非真实条件句的形式"Were it not for",表示对事实的假设。 17. **情景交际**:第35题的"How do ...

    第二次作业1

    WHERE C.C# NOT IN (SELECT SC.C# FROM SC JOIN S ON SC.S# = S.S# WHERE S.SNAME = '刘丽'); ``` 4) 检索平均成绩在60分以下的学生的学号和姓名: ```sql SELECT S.S#, S.SNAME FROM SC JOIN S ON SC.S# = S.S# ...

    西安电子科技大学MySQL数据库上机2答案

    西安电子科技大学的MySQL数据库上机任务旨在让学生深入理解数据库管理和SQL语言的核心概念。...同时,自由练习第四章中级SQL的其他特性,鼓励学生探索更多如联接查询、子查询、事务处理、存储过程等高级功能。

    数据库第一次实验.doc

    - 连接查询:使用`INNER JOIN`结合多个表进行查询,如`SELECT e.name, s.salary FROM employee e INNER JOIN salary s ON e.id = s.emp_id`。 5. 视图操作: - 创建视图:`CREATE VIEW v_dp AS SELECT * FROM ...

    辽宁省铁岭市2015 2016学年七年级英语下学期第一次月考试题(无答案) 人教新目标版.doc

    这篇文档是针对七年级学生的一份英语月考试卷,涵盖了人教新目标版教材的相关内容。试卷主要测试学生的英语基础知识,包括语法、词汇和日常表达。以下是对试卷中部分题目涉及知识点的详细解释: 1. 单项选择题第1题...

    oracle sql左联右联 平时 (学习记下来的)

    - 第一个左连接:`LEFT JOIN countiesCitiesCode c ON b.bacity = c.cccode` - `b.bacity`字段表示的是城市编码。 - `c.cccode`字段表示的是城市编码。 - 这个连接条件意味着只有当`breedarea`表中的城市编码与`...

    高一英语必修一词汇复习PPT学习教案.pptx

    "第一次做某事"的句型中,动词时态应使用现在完成时或过去完成时,如"This is the first time that I have done"和"That was the first time that I had done"。同时,"It’s no pleasure doing sth."等句型表示做某...

    人教高中英语必修一单词复习PPT学习教案.pptx

    4. “It was the first time + 完成时态”的结构,用于表达“第一次做某事”。 5. advice作为不可数名词,不能加s,如:Father went to his doctor for advice about his heart trouble。 6. 情态动词shouldn't have...

    SQL+SERVER精华查询语句(最新完整版).pdf

    通过子查询结合`TOP 1`与`ORDER BY tBorrowTime DESC`来获取每个学生最近的一次借书记录,再通过`JOIN`连接其他表获取相关信息。代码如下: ```sql SELECT b.sStudentName, sBookName AS 书名, tBorrowTime AS 借书...

    Mybatis第三天学习代码

    在Mybatis中,处理多对多关系比较复杂,通常需要通过两次查询来完成,一次获取主表数据,另一次获取中间表和次表的关联数据。 在实践中,你需要根据业务需求创建对应的XML映射文件或Mapper接口,编写SQL语句,并在...

    国家开放大学数据库应用技术第三次形考作业2

    JOIN SC ON Student.Sno = SC.Sno WHERE SC.Cno = 'C002'; ``` **知识点解析:** - **SELECT子句**:用于指定需要返回的列,这里是学生姓名(Sname)和所在系(Sdept)。 - **FROM子句**:指定查询的基本表,这里是...

    SQL查询语句练习

    - **知识点**:这里使用了两次`JOIN`操作,第一次连接Student表和Score表,第二次连接Score表和Course表。 #### 16. 查询所有学生的Sname、Cname和Degree列。 - **SQL语句**:`SELECT s.Sname, c.Cname, sc.Degree ...

    学号_姓名_数据库实验一报告(模板)1

    JOIN inventory ON rental.inventory_id = inventory.inventory_id JOIN film ON inventory.film_id = film.film_id JOIN customer ON rental.customer_id = customer.customer_id GROUP BY customer....

    Joinin五年级(上册)期中考试题.doc

    【Joinin五年级(上册)期中考试题.doc】是一个文档,包含了五年级学生的期中测试题目。这些题目旨在检查学生对英语基础知识的理解和应用能力。以下是根据试卷内容提炼出的一些关键知识点: 1. **一般疑问句的回答*...

    CI框架数据库查询之join用法分析

    每调用一次join方法,就可以添加一个新的表和相应的连接条件到查询中。这一点对于处理复杂关系的数据库设计来说非常有用。 值得注意的是,join方法是CodeIgniter框架中数据库查询构建器的一部分,使用时不需要直接...

    高一英语人教新课标必修复习绝对系列PPT学习教案.pptx

    - "it is the first/second/last time… that…" 表示第一次/第二次/最后一次做某事,that后的句子用完成时态 - "calm (…down)" 使某人或某事物平静下来 - "go through" 经历,翻阅,审查 - "go after" 追求,...

Global site tag (gtag.js) - Google Analytics