SQL联合查询

[原文链接] http://www.cnblogs.com/aaapeng/archive/2010/01/20/1652151.html#commentform

联合查询效率较高.以下例子来说明联合查询的好处

t1表结构(用户名,密码)    userid int         username   varchar(20)     password       varchar(20)

1                    jack                           jackpwd

2                    owen                        owenpwd

t3表结构(用户积分,等级)    userid int         jf   int                   dj           int

1                     20                       3

3                     50                       6

第一:内联(inner join)

如果想把用户信息,积分,等级都列出来.那么一般会这样写

select * from t1 ,t3 where t1.userid = t3.userid   其实这样的结果等同于select * from t1 inner join t3 on t1.userid=t3.userid

就是把两个表中都存在userid的行拼成一行.这是内联.但后者的效率会比前者高很多.建议用后者的写法.

运行结果:userid    username password     userid   jf    dj

1             jack        jacjpwd      1          20   3

第二:左联(left outer join)显示左表中的所有行

select * from t1 left outer join t3 on t1.userid=t3.userid

运行结果:userid    username password     userid   jf     dj

      1        jack          jackpwd       1         20   3

2       owen         owenpwd     NULL NULL   NULL

第三:右联(right outer join)显示右表中的所有行

select * from t1 right outer join t3 on t1.userid=t3.userid

运行结果:userid    username password     userid   jf     dj

      1        jack          jackpwd       1         20   3

Null    Null           Null              3        50     6

第四:全联(full outer join)显示两边表中所有行

select * from t1 full outer join t3 on t1.userid=t3.userid

运行结果:userid    username password     userid   jf     dj

      1        jack          jackpwd       1         20   3

2       owen         owenpwd     NULL NULL   NULL

Null    Null           Null              3        50     6

总结,关于联合查询,本人已测试过.效率的确比较高,4种联合方式如果可以灵活使用,基本上复杂的语句结构也会简单起来.这4种方式是:

Inner join          left outer join           right outer join        full outer join

时间: 2024-12-16 12:46:11

SQL联合查询的相关文章

SQL 联合查询 + XML解析

(select a.EBILLNO, a.EMPNAME, a.APPLYDATE, b.HS_NAME, replace(replace(a.SUMMARY,char(10), ''),char(13),'') as SUMMARY, cast(c.XmlData as XML).value('(/List/item/No/text())[1]','NVARCHAR(300)') as No, cast(c.XmlData as XML).value('(/List/item/zje/text

数据库sql联合查询mid类型的分页数据取不了全部的值错误

USE [Travel]GO/****** Object:  StoredProcedure [dbo].[NoticeGetPagedData]    Script Date: 06/13/2014 20:44:51 ******/SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOALTER PROCEDURE [dbo].[NoticeGetPagedData]@pageIndex int = 1,--页码@pageSize int =10,--页容量

SQL联合查询(内联、左联、右联、全联)语法

SQL联合查询(内联.左联.右联.全联)语法 概述: 联合查询效率较高,举例子来说明联合查询:内联inner join .左联left outer join .右联right outer join  .全联full outer join 的好处及用法. 联合查询效率较高,以下例子来说明联合查询(内联.左联.右联.全联)的好处: T1表结构            (用户名,密码) userid(int) username            varchar(20) password       

SQL联合查询:子表任一记录与主表联合查询

今天有网友群里提了这样一个关于SQL联合查询的需求: 一.有热心网友的方案: 二.我的方案: select * from ( select a.*,(select top 1 Id from B as b where b.CgId =a.ID)as bid from A as a ) as temp left join B as b2 on temp.bid=b2.Id

SQL联合查询中的关键语法(转)

联合查询效率较高.以下例子来说明联合查询的好处 t1表结构(用户名,密码)    userid int         username   varchar(20)     password       varchar(20) 1                    jack                           jackpwd 2                    owen                        owenpwd t3表结构(用户积分,等级)    u

SQL联合查询中的关键语法

联合查询效率较高.以下例子来说明联合查询的好处 t1表结构(用户名,密码)    userid int         username   varchar(20)     password       varchar(20) 1                    jack                           jackpwd 2                    owen                        owenpwd t3表结构(用户积分,等级)    u

hibernate用sql联合查询数据库

@RequestMapping(value = "/FeedPager.cqzk")     @ResponseBody     public String url_sa1(HttpServletRequest request, BootPage page)             throws ServletException, IOException, RuntimeException {         @SuppressWarnings("unchecked"

sql 联合查询速度慢,需要对其进行分组

分组:SELECT   * FROM(SELECT ROW_NUMBER() OVER(ORDER BY  ProjID) as row_number,* FROM ( select ProjApplyDate,projProperty,ProjID,ProjStatusCurrent,ProjGuId,ProjEtpId,ProjRegionId,ProjName,ProjAddress,ProjAreaSize,ProjCost,ProjCreateTime,ProjChargePerson

sql联合查询多个表

SELECT hp_patient.name, hp_ptorders.DrugName, hp_ptorders.Dosage,hp_ptorders.DosageUnitFROM hp_patientLEFT JOIN hp_ptordersON hp_patient.pid=hp_ptorders.PtIdORDER BY hp_patient.name