当前位置: 首页 > 编程笔记 >

inner join 内联与left join 左联的实例代码

申博厚
2023-03-14
本文向大家介绍inner join 内联与left join 左联的实例代码,包括了inner join 内联与left join 左联的实例代码的使用技巧和注意事项,需要的朋友参考一下

今天老板把我叫过去,给我分析了一下我写的存储过程【捂脸羞愧中。。。】,因为又临时加了个需求需要关联另外一个视图,我写成了内联,所以读取出来的数据少了好多。

select t1.MOTCARRIERNAME
   ,t2.ROUTENAME
   ,y.BUSLICENSE
   ,y.ACCTPRICE
   ,y.PRICE
   ,y.CANACCTPRICE
   ,y.CENTERACCTPRICE
   ,y.OTHERACCTPRICE
   ,y.STAACCTPRICE
   ,y.TKAMOUNT
   ,y.SCHBILLID
   ,m.ManualTicketsStationFee
   ,m.ManualTicketsFee
  from
  (Select b.MOTCARRIERID
   ,b.ROUTEID
   ,b.BUSLICENSE
   ,a.SCHBILLID
   ,a.ACCTPRICE
   ,a.CANACCTPRICE
   ,a.CENTERACCTPRICE
   ,a.OTHERACCTPRICE
   ,a.PRICE
   ,a.STAACCTPRICE
   ,a.TKAMOUNT
   From history.TKSCHBILLHISTORY a
   ,history.TKSERIALSCHHISTORY b
   ,history.TKCARRYSTASCHHISTORY c
   Where a.Drvdate between @pStartDate and @pEndDate 
    and a.SchBillStatusId=1 
    and b.SchId=a.SchId 
    and b.Drvdate=a.Drvdate 
    and a.schid=c.schid 
    and a.DRVDATE=c.DRVDATE
  )y
  ,baseinfo.MOTORCARRIER t1
  ,baseinfo.ROUTE t2
  ,Settlement.dbo.View_ManualTicket m
  where t1.MOTCARRIERID=y.MOTCARRIERID and t2.ROUTEID =y.ROUTEID and m.BusLicense=y.BUSLICENSE
  order by t1.MOTCARRIERNAME,t2.ROUTENAME,y.BUSLICENSE

这种关联叫做内联,表A,表B where A.Id=B.Id,只有表A,表B里都有这个ID,这条数据才会被显示出来。但是我的项目中需要的是以表A为主表,只要表A中有的数据都要显示出来,表B中有与表A相关的数据就显示,没有则置为空。

即A left join B on A.Id=B.Id

总结

以上所述是小编给大家介绍的inner join 内联与left join 左联的实例代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对小牛知识库网站的支持!

 类似资料:
  • 问题内容: 假设我们有下表t1和t2: 我们希望找到以下结果: 这基本上是右连接与左连接的并集。以下代码有效,但感觉很笨拙: 有没有更好的方法来实现这一目标? 问题答案:

  • 问题内容: 我已经搜索过,但没有找到明确的答案。以下哪一项对SQL Server的性能更好: 或者… 我尝试过同时运行这两个程序,但是很难确定。我会很高兴地解释一个为什么比另一个更快,或者这取决于情况。 问题答案: 您的两个查询不做相同的事情。特别是,如果两个表中的值重复,则第一个将返回重复的行。 如果要在其他两个表中的任何一个中查找行,我建议使用: 并且,在和中都创建索引。 您的原始查询哪个更快

  • 问题内容: 我有三个表: 命令 OrderId,int PK CustomerId,与客户之间为int FK,允许为NULL 顾客 CustomerId,int PK CompanyId,将FK转换为Company,不允许为NULL 公司介绍 CompanyId,int PK 名称nvarchar(50) 我想选择所有订单,无论是否有客户,如果有客户,也要选择客户的公司名称。 如果我使用此查询…

  • 我有一个表'gems'在那里存储帖子(例如blog)。对帖子的回复也存储在同一个表中,其中有一个字段存储父帖子的密钥。每个帖子都可以附上文件。 我需要得到一个与相关的回复和附加文件的帖子列表。因此“gems”有多个左联接--一个连接到它自己,一个连接到带有文件名的“gemdetail”。此查询有效: 但是,如果我每个帖子有20个回复和10个文件,那么返回的记录数是每个帖子200条。限制条款起作用,

  • 本文向大家介绍Markdown 内联代码,包括了Markdown 内联代码的使用技巧和注意事项,需要的朋友参考一下 示例 Markdown支持添加内联代码like this,该代码是通过将文本包装在反引号中获得的: `code here` 或者,您可以将内联代码放在<code>和</code>HTML标记之间。 考虑以下降价代码: 这将产生以下输出: This是内联代码块!This也是一个! 如果

  • 问题内容: 我们有下面的查询。使用LEFT OUTER联接需要9秒钟才能执行。将LEFT OUTER更改为LEFT INNER可以将执行时间减少到2秒,并且返回 相同 数量的行。由于正在处理dbo.Accepts表中相同数量的行,而不论联接类型如何,为什么外层要花3倍的时间? 问题答案: 返回相同行数的事实是事后事实,查询优化器无法预先知道Accepts中的每一行在Marker中都有匹配的行,可以