如何将此查询编写为完整联接而不是联合左/右联接?

2024-07-01

这是代码,显示输入和所需的输出。

基本上,我正在尝试自我加入,以将经纪人声明的结果与我的内部记录相匹配。所以左边的列是经纪人的列表,右边是我的列表。如果经纪人有仓位,而我没有,则右侧为 NULL。如果我有仓位而经纪商没有,则左侧为 NULL。

左连接+右连接+联合的工作原理完全符合我的要求。似乎应该有一些巫毒允许完全加入而无需两次选择,但我无法弄清楚。

drop table MatchPositions
go

create table MatchPositions
( 
    mt_source varchar (10),
    mt_symbol varchar (10),
    mt_qty float,
    mt_price float
)

go

insert into MatchPositions values ('BROKER', 'IBM', 100, 50.25)
insert into MatchPositions values ('BROKER', 'MSFT', 75, 30)
insert into MatchPositions values ('BROKER', 'GOOG', 25, 500)
insert into MatchPositions values ('BROKER', 'SPY', 200, 113)

insert into MatchPositions values ('MODEL', 'MSFT', 75, 30)
insert into MatchPositions values ('MODEL', 'GOOG', 25, 500)
insert into MatchPositions values ('MODEL', 'GLD', 300, 150)

go

select * from MatchPositions b
left join MatchPositions m on b.mt_symbol = m.mt_symbol and m.mt_source = 'MODEL'
where b.mt_source = 'BROKER'
union

select * from MatchPositions b
right join MatchPositions m on b.mt_symbol = m.mt_symbol and b.mt_source = 'BROKER'
where m.mt_source = 'MODEL'

这是预期的输出:

mt_source  mt_symbol  mt_qty                 mt_price               mt_source  mt_symbol  mt_qty                 mt_price
---------- ---------- ---------------------- ---------------------- ---------- ---------- ---------------------- ----------------------
NULL       NULL       NULL                   NULL                   MODEL      GLD        300                    150
BROKER     GOOG       25                     500                    MODEL      GOOG       25                     500
BROKER     IBM        100                    50.25                  NULL       NULL       NULL                   NULL
BROKER     MSFT       75                     30                     MODEL      MSFT       75                     30
BROKER     SPY        200                    113                    NULL       NULL       NULL                   NULL

;WITH T1 AS
(
SELECT *
FROM MatchPositions 
WHERE mt_source = 'BROKER'
), T2 AS
(
SELECT *
FROM MatchPositions 
WHERE mt_source = 'MODEL'
)
SELECT *
FROM T1 FULL JOIN T2 ON T1.mt_symbol = T2.mt_symbol
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将此查询编写为完整联接而不是联合左/右联接? 的相关文章

  • 将多对多关系中的所有相关记录分组,SQL 图形连接组件

    希望我错过了一个简单的解决方案 我有两张桌子 其中包含一份公司列表 第二个包含出版商列表 两者之间的映射是多对多的 我想要做的是将表 A 中与表 B 中的发布商有任何关系的所有公司捆绑或分组 反之亦然 最终结果看起来像这样 GROUPID
  • SQL 中WITH 子句的使用指南

    我了解如何使用WITH递归查询子句 但我在理解它的一般用途 功能时遇到问题 例如 以下查询更新一条记录 其 id 是通过使用按时间戳返回第一条记录 id 的子查询来确定的 update global prospect psp set sta
  • varchar 值的转换溢出了 int 列

    对于某些值 nReservationID SELECT phoneNumber CASE WHEN ISNULL rdg2 nPhoneNumber 0 0 THEN ISNULL rdg2 nMobileNumber 0 ELSE ISN
  • 读取输入消息时出现 I/O 错误;嵌套异常是 java.io.IOException:流已关闭

    这是我的控制器 RestController RequestMapping reclamacao public class ClaimController Autowired private ClaimRepository claimRep
  • Laravel 显示按年或月分组的记录详细信息

    我刚刚迁移到 Laravel 框架 并开始迁移一些遗留站点 但我遇到了 SQL 或 Blade 的问题 不知道是哪个 我必须显示大量的 运动类别 行 这些行按年份和月份分组 每个人都需要出勤等 我不确定继续走哪条路 我能够显示所有行并按日期
  • JOOQ初始化DAO最佳方法

    我想知道初始化 JOOQ 生成 DAO 的最佳实践 现在 我使用以下方法来初始化 JOOQ 生成的 DAO 在以下情况下 Student Dao 是 JOOQ 生成的 public class ExtendedStudentDAO exte
  • LINQ Join 运算符是否使用嵌套循环、合并或 HashSet 连接?

    有谁知道 LINQ 使用其 Join 运算符执行什么 Join 算法 是嵌套循环 合并还是哈希集 如果支持的话 有什么方法可以指定不同的吗 问候 阿尔伯特 首先 它有效地从 内部 序列创建查找 然后迭代外部序列 然后 它可以从外部序列中查找
  • Hibernate 标准离开,排除 JOIN

    我不知道如何使用 Hibernate Criteria 来做到这一点 SELECT FROM Table A A LEFT JOIN Table B B ON A Key B Key WHERE B Key IS NULL Hibernat
  • SQL:是否可以根据“like”函数的结果进行“分组”?

    我正在使用 Oracle SQL 我想对一些 喜欢 函数结果的不同行进行分组 用一个例子来详细说明 假设我有一个表 MESA 其中一列是一个巨大的字符串 我正在计算与特定模式匹配的行数 SELECT m str count FROM MES
  • 如何将 iBATIS 查询与 select 子句中的参数化列映射?

    我想要一种方法 可以从数据库中特定表的列中查找特定值 其中列的名称作为参数传入 因此 Java 方法将具有以下签名 public Integer getFoo String column throws DataAccessException
  • 与 NULL 合并

    我在视图中发现了这段 SQL 片段 我对它的用途感到相当困惑 为简洁起见 实际的 SQL 被缩短了 SELECT COALESCE b Foo NULL AS Foo FROM a LEFT JOIN b ON b aId a Id 我想不
  • “无法在查询内执行DML操作”的解决方案?

    我正在使用数据分析工具 我的要求是接受用户的值 将其作为参数传递并将其存储在表中 非常简单 所以我坐下来写这篇文章 create or replace procedure complex datainput in VARCHAR2 is b
  • SQL Server - INSERT 后返回值

    我试图在 INSERT 语句后获取键值 例子 我有一个包含属性名称和 ID 的表 id 是生成的值 INSERT INTO table name VALUES bob 现在我想在同一步骤中取回 id 这是怎么做到的 我们使用的是 Micro
  • 提高 PostgresQL 聚合查询性能

    我正在聚合 Postgres 表中的数据 查询大约需要 2 秒 我希望将其减少到不到一秒 请参阅下面的执行详细信息 Query select a search keyword hll cardinality hll union agg a
  • 如何将此查询编写为完整联接而不是联合左/右联接?

    这是代码 显示输入和所需的输出 基本上 我正在尝试自我加入 以将经纪人声明的结果与我的内部记录相匹配 所以左边的列是经纪人的列表 右边是我的列表 如果经纪人有仓位 而我没有 则右侧为 NULL 如果我有仓位而经纪商没有 则左侧为 NULL
  • 与选择顶部相反

    Transact SQL 有一个方便的SELECT TOP 4 whatever FROM 我想做一个 SELECT 查询 返回表中的最后 n 个条目 而不是第一个条目 这是我用来返回在表中输入的前四个项目的查询 使用 SELECT TOP
  • 具有 BETWEEN 时间戳的 SQL 查询出现意外结果

    我创建了一个小测试应用程序来追踪我在 Heroku 上使用 Postgres 时遇到的问题 http snippi com s xd511rf http snippi com s xd511rf 正如你在队列中看到的49 我想检索所有创建的
  • 如何在 Oracle SQL 中选择相关的一组项目

    我有一些表格的数据 Key ID Link 1 MASTER 123 2 AA 123 3 AA 123 4 BB 123 5 MASTER 456 6 CC 456 我希望能够在同一选择中选择所有符合选择标准的链接项目以及链接的主项目 例
  • MySQL:限制记录数量的百分比?

    假设我有一个值列表 如下所示 id value A 53 B 23 C 12 D 72 E 21 F 16 我需要前10名percent此列表中的 我尝试过 SELECT id value FROM list ORDER BY value
  • 为什么外键在理论上比在实践中使用更多?

    当你学习关系理论时 外键是强制性的 但实际上 在我工作的每个地方 表乘积和连接总是通过在查询中显式指定键来完成 而不是依赖 DBMS 中的外键 这样 您可以通过不应该是外键的字段连接两个表 从而产生意外的结果 这是为什么 DBMS 不应该强

随机推荐

  • 如果 git-am 失败并显示“索引中不存在”怎么办?

    我有一个补丁 当我尝试使用 git am 应用它时 它会给出以下输出 Checking patch old filename error old filename does not exist in index 在补丁中 旧 文件名实际上已
  • data.table中的行操作

    我正在尝试使用以下方法对行执行简单的求和和平均值数据表 http datatable r forge r project org 但我得到了意想不到的结果 我遵循了第 2 节中的帮助常见问题手册 http cran r project or
  • 无法从 GetSystemTime() 获取毫秒

    我正在尝试打印秒和毫秒分辨率计时 我正在使用GetSystemTime 这是我的代码 GetSystemTime datetime RETAILMSG 1 T Time After Data Sent to USB d d r n date
  • 如何在Windows上安装PyGI(Python Gobject Introspection)?

    安装Python解释器 http python org ftp python 2 7 2 python 2 7 2 msi http python org ftp python 2 7 2 python 2 7 2 msi and http
  • pandas 支持 DataFrame 的哪些绘图后端?

    pandas 确实允许与第三方一起绘图绘制后端 https pandas pydata org pandas docs stable development extending html plotting backends 我知道matpl
  • CoreGraphics 和 CoreAnimation 有什么不同?

    我正在使用 coregraphics 开发 iphone 游戏 但速度很慢 我无法玩我的游戏 所以 我用谷歌搜索了很多 在谷歌搜索过程中 我发现了以下内容 CoreGraphics CoreAnimation OpenGL ES CALay
  • 查询每组前 N 个代码适用于 MySQL,但适用于 MariaDB,结果不同

    我有一个 SQL 查询 它提取每组的最新 3 条记录 MySQL 的查询结果与 MariaDB 不同 该查询在下面的sqlfiddle中实现 http sqlfiddle com 9 c09fe 2 http sqlfiddle com 9
  • 应用程序大小限制和查找应用程序的大小

    好吧 我读过无数地方说应用程序大小限制是 20 MB 有些说是 50 MB 是哪一个 更重要的是 我当前的应用程序在管理器的存档部分中的 估计应用程序商店大小 为 106 1mb 然而 当我将它分发到一个临时文件时 它会以 ipa 的形式出
  • 使用 FileDialog 打开工作簿并在 Excel VBA 中对其进行操作

    我正在学习如何使用 Excel 宏 我发现了这段代码 Dim fd As Office FileDialog Set fd Application FileDialog msoFileDialogFilePicker With fd All
  • 使用 swift 3.0 编译的模块无法在 Swift 3.0.1 中导入

    我将 Xcode 升级到 8 1 GM 现在收到以下 SwiftyJSON 错误 其他导入的框架似乎也有效 有没有办法强制它在 Swift 3 中工作 直到 SwiftyJSON 升级他们的框架 我使用 Carthage 导入 更新框架 我
  • 应用内购买仍在等待审核

    当我们开发新版本的应用程序时 我们提交了一些应用内购买的新版本 这些内容与旧版本相同 但属于消耗品 因此您可以多次购买 并且还支持折扣 它们被返回的原因是 请与二进制文件一起提交 因此 我们在上传新应用程序版本的二进制文件后再次提交了它们
  • jQuery 可以根据高度选择 div 吗?还是教程错了?

    我正在尝试选择一个div基于其高度 如本教程所示 jQuery 选择 http tutorials jenkov com jquery selection html 我无法让它工作 jsbin 示例 http jsbin com eriqi
  • 向量到元素之间差异矩阵

    给定一个向量 vec lt 1 5 创建矩阵的有效方法是什么 其中向量分量之间的差异显示在矩阵 差异矩阵 中 如果您愿意的话 显然 我可以使用两个 for 循环来完成此操作 但我需要使用更大的数据集来完成此操作 我试图为这个矩阵创建一个术语
  • 列出 AD 用户的组成员身份

    使用以下 Powershell 代码片段 我获取当前用户的组成员身份的名称 groups System Security Principal WindowsIdentity GetCurrent Groups foreach i in gr
  • 当字符串值包含逗号时,JSON.parse 在 Safari 中失败

    我正在构建一个购物车 当按下 购买 按钮时 Web 服务会返回一个 JSON 输出 然后我将其作为字符串保存到 Javascript cookie 中 Web 服务的典型返回可能是 d 58658 id 58658 qty 1 single
  • 在Python中根据等级和花色对一手牌进行排序

    我正打算制作一款纸牌游戏 目前我正在着手开发它 我感到困惑的是 按牌的等级对手中的牌进行排序 然后按花色排序 以及如何减少重复 目前 我可能可以创建一个 for 循环来组织卡片 然后为每种可能性设置 52 个不同的 if 但我想知道它们是否
  • 当叠加两个相同大小的图像时,其中一个会偏移

    我正在尝试通过将一个图像叠加在另一个图像上来创建图像 该代码有效 但我叠加的图像似乎略有拉伸 我不知道为什么 所以代码只是创建一个空白的红色 24x24 矩形 然后我覆盖一个 24x24 png 文件 如下所示 我期待的是这样的 但我实际上
  • dte.Solution.SolutionBuild.StartupProjects 更改时是否会触发事件?

    我正在构建一个 Visual Studio 2010 插件供我公司内部使用 我想自定义主窗口标题以显示当前启动项目的名称 我可以使用以下代码设置主窗口的标题 DTE d GlobalClass dte2 as DTE IntPtr hWnd
  • WPF ICollectionView 过滤

    我写了一个代码过滤项目在组合框中 我的问题是 你会怎么做 我认为这种带有反射的解决方案可能非常有效slow ICollectionView view CollectionViewSource GetDefaultView newValue
  • 如何将此查询编写为完整联接而不是联合左/右联接?

    这是代码 显示输入和所需的输出 基本上 我正在尝试自我加入 以将经纪人声明的结果与我的内部记录相匹配 所以左边的列是经纪人的列表 右边是我的列表 如果经纪人有仓位 而我没有 则右侧为 NULL 如果我有仓位而经纪商没有 则左侧为 NULL