SQL 连接 JOIN 例解。(左连接,右…

本文详细解析了SQL中的各种连接方式,包括左连接、右连接、全连接、内连接、交叉连接和自连接,并通过实例展示了每种连接的具体应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

假设有如下表:
SQL <wbr>连接 <wbr>JOIN <wbr>例解。(左连接,右连接,全连接,内连接,交叉连接,自连接...

一个为投票主表,一个为投票者信息表~记录投票人IP及对应投票类型,左右连接实际说是我们联合查询的结果以哪个表为准~
1:如右接连 right join 或 right outer join:
SQL <wbr>连接 <wbr>JOIN <wbr>例解。(左连接,右连接,全连接,内连接,交叉连接,自连接...
我们以右边voter表为准,则左表(voteMaster)中的记录只有当其ID在右边(voter)中存在时才会显示出来,如上图,左边中ID为3.4.5.6因为这些ID右表中没有相应记录,所以没有显示!
2:因此我们自然能理解左连接 left join 或者 left outer join 
SQL <wbr>连接 <wbr>JOIN <wbr>例解。(左连接,右连接,全连接,内连接,交叉连接,自连接...
可见,现在右边中ID在中存在时才会显示,当右边中没有相应数据时则用NULL代替!
3:全连接 full join 或者 full outer join,为二个表中的数据都出来,这里演示效果与上一样! 
4:内连接 inner join 或者 join;它为返回字段ID同时存在于表voteMaster 和 voter中的记录
SQL <wbr>连接 <wbr>JOIN <wbr>例解。(左连接,右连接,全连接,内连接,交叉连接,自连接...
5:交叉连接(完全连接)cross join 不带 where 条件的
没有 WHERE 子句的交叉联接将产生联接所涉及的表的笛卡尔积。第一个表的行数乘以第二个表的行数等于笛卡尔积结果集的大小。(table1和table2交叉连接产生6*3=18条记录)
SQL <wbr>连接 <wbr>JOIN <wbr>例解。(左连接,右连接,全连接,内连接,交叉连接,自连接...
等价select vm.id,vm.voteTitle,vt.ip from voteMaster as vm,voter as vt

6:自连接。在这里我用我前段时间一个电力项目中的例子(改造过)
如下表:
SQL <wbr>连接 <wbr>JOIN <wbr>例解。(左连接,右连接,全连接,内连接,交叉连接,自连接...
这是一个部门表,里面存放了部门及其上级部门,但都放在同一张表中,我们假设现在需要用SQL查询出各部门及其上级部门!就如何做,
当然,不用自连接也一样,可以如下:
SQL <wbr>连接 <wbr>JOIN <wbr>例解。(左连接,右连接,全连接,内连接,交叉连接,自连接...
我们达到预期目的!在这个查询中使用了一个子查询完成对上级部门名的查询,如果使用自连接,那么结构上感觉会清晰很多。
SQL <wbr>连接 <wbr>JOIN <wbr>例解。(左连接,右连接,全连接,内连接,交叉连接,自连接...
是不是也同样完成了功能呢,这里除了使用自连接外,还使用了左连接,因为省电力没有上级部门,他是老大,如果使用内连接,就会把这条记录过滤掉,因为没有和他匹配的上级部门。
自连接用的比较多的就是对权形结构的查询!类似上表!

 

转自:http://apps.hi.baidu.com/share/detail/8085139

Microsoft OLE DB Provider for ODBC Drivers 错误 '80040e14' [Microsoft][ODBC Microsoft Access 驱动程序] FROM 子句语法错误。 /index.asp,行 55;代码是:<%@LANGUAGE="VBSCRIPT"%> <!--#include file="Connections/shujuku.asp" --> <% Dim MM_editAction MM_editAction = CStr(Request.ServerVariables("SCRIPT_NAME")) If (Request.QueryString <> "") Then MM_editAction = MM_editAction & "?" & Server.HTMLEncode(Request.QueryString) End If ' boolean to abort record edit Dim MM_abortEdit MM_abortEdit = false %> <% If (CStr(Request("MM_insert")) = "forml") Then If (Not MM_abortEdit) Then ' execute the insert Dim MM_editCmd Set MM_editCmd = Server.CreateObject ("ADODB.Command") MM_editCmd.ActiveConnection = MM_shujuku_STRING MM_editCmd.CommandText = "INSERT INTO [信息表] ([姓名], [性别], [手机号码], [邮箱]) VALUES (?, ?, ?, ?)" MM_editCmd.Prepared = true MM_editCmd.Parameters.Append MM_editCmd.CreateParameter("param1", 201, 1, -1, Request.Form("姓名")) ' adLongVarChar MM_editCmd.Parameters.Append MM_editCmd.CreateParameter("param2", 201, 1, -1, Request.Form("性别")) ' adLongVarChar MM_editCmd.Parameters.Append MM_editCmd.CreateParameter("param3", 201, 1, -1, Request.Form("手机号码")) ' adLongVarChar MM_editCmd.Parameters.Append MM_editCmd.CreateParameter("param4", 201, 1, -1, Request.Form("邮箱")) ' adLongVarChar MM_editCmd.Execute MM_editCmd.ActiveConnection.Close ' append the query string to the redirect URL Dim MM_editRedirectUrl MM_editRedirectUrl = "提示插入成功.html" If (Request.QueryString <> "") Then If (InStr(1, MM_editRedirectUrl, "?", vbTextCompare) = 0) Then MM_editRedirectUrl = MM_editRedirectUrl & "?" & Request.QueryString Else MM_editRedirectUrl = MM_editRedirectUrl & "&" & Request.QueryString End If End If Response.Redirect(MM_editRedirectUrl) End If End If %> <% Dim Recordset1 Dim Recordset1_cmd Dim Recordset1_numRows Set Recordset1_cmd = Server.CreateObject ("ADODB.Command") Recordset1_cmd.ActiveConnection = MM_shujuku_STRING Recordset1_cmd.CommandText = "SELECT * FROM [信息表]" Recordset1_cmd.Prepared = true Set Recordset1 = Recordset1_cmd.Execute Recordset1_numRows = 0 %> <html> <head> <title>shouye</title> <body><form name="forml" action="<%=MM_editAction%>" method="POST" id="forml"> <p>姓名: <label for="textfield"></label> <input type="text" name="姓名" id="姓名"> </p> <p>性别: <input type="radio" name="性别" id="性别" value="男"> 男 <label for="radio"></label> <input type="radio" name="性别" id="性别" value="女"> 女 <label for="radio2"></label> </p> <p>手机号码: <label for="textfield3"></label> <input type="text" name="手机号码" id="手机号码"> </p> <p>邮箱: <label for="textfield4"></label> <input type="text" name="邮箱" id="邮箱"> </p> <p> <input type="submit" name="button" id="button" value="提交"> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="index.asp">取消</a></p> <p>&nbsp;</p> <p>&nbsp;</p> </form> <p>This is my first website<p> </body> </head> </html> <% Recordset1.Close() Set Recordset1 = Nothing %>
最新发布
05-23
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值