T-SQL:如何从一个表中获取其值与另一表中的值完全匹配的行?

2023-11-24

鉴于以下情况:

declare @a table
(
    pkid int,
    value int
)

declare @b table
(
    otherID int,
    value int
)


insert into @a values (1, 1000)
insert into @a values (1, 1001)
insert into @a values (2, 1000)
insert into @a values (2, 1001)
insert into @a values (2, 1002)

insert into @b values (-1, 1000)
insert into @b values (-1, 1001)
insert into @b values (-1, 1002)

如何查询@a中与@b完全匹配的所有值?

{@a.pkid = 1, @b.otherID = -1}不会返回(3 个值中只有 2 个匹配)

{@a.pkid = 2, @b.otherID = -1}将返回(3 个值匹配中的 3 个)

重构表可以是一种选择。

EDIT:我根据 James 和 Tom H 的答案取得了成功。

当我在 @b 中添加另一个案例时,它们有点不足。

insert into @b values (-2, 1000)

假设这应该返回另外两行({@a.pkid = 1, @b.otherID = -2} and {@a.pkid = 2, @b.otherID = -2},它不起作用。然而,对于我的项目来说这不是问题。


这更有效(它使用TOP 1代替COUNT),并与(-2, 1000):

SELECT  *
FROM    (
        SELECT  ab.pkid, ab.otherID,
                (
                SELECT  TOP 1 COALESCE(ai.value, bi.value)
                FROM    (
                        SELECT  *
                        FROM    @a aii
                        WHERE   aii.pkid = ab.pkid
                        ) ai
                FULL OUTER JOIN
                        (
                        SELECT  *
                        FROM    @b bii
                        WHERE   bii.otherID = ab.otherID
                        ) bi
                ON      ai.value = bi.value
                WHERE   ai.pkid IS NULL OR bi.otherID IS NULL
                ) unmatch
        FROM
                (
                SELECT  DISTINCT pkid, otherid
                FROM    @a a , @b b
                ) ab
        ) q
WHERE   unmatch IS NOT NULL
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

T-SQL:如何从一个表中获取其值与另一表中的值完全匹配的行? 的相关文章

  • 了解 SSMS 2008 中关系的更新和删除规则

    当我们定义外键约束时 我对 SQL Server 2008 Management Studio 中的更新和删除规则的含义感到困惑 我也没有找到相关的帮助文档 例如F1帮助 这是屏幕快照 如果有人能描述它们的含义并推荐一些相关文档来阅读 我将
  • Spark.read 在 Databricks 中给出 KrbException

    我正在尝试从 databricks 笔记本连接到 SQL 数据库 以下是我的代码 jdbcDF spark read format com microsoft sqlserver jdbc spark option url jdbc sql
  • 探查器模板可以迁移到较新版本的 SQL Profiler 吗?

    是否可以将 Profiler 模板迁移到较新版本的 SQL Server 就我而言 我想将 SQL 2008 模板带到 2012 年 我尝试过 1 直接文件复制和 2 导出 导入 在这两种情况下 旧模板都会运行 但无法修改 修改后会出现以下
  • 重命名重复行

    这是我的问题的一个简化示例 我有一个表 其中有一个包含重复条目的 名称 列 ID Name 1 AAA 2 AAA 3 AAA 4 BBB 5 CCC 6 CCC 7 DDD 8 DDD 9 DDD 10 DDD 进行 GROUP BY 操
  • 单独的逗号分隔值并存储在sql server的表中

    我有一个存储过程 它将逗号分隔的值作为输入 我需要将其分开并需要将其作为单独的行存储在表中 令 SP 的输入为 Rule ID ListType ID Values 1 2 319 400 521 8465 2013 我需要将它存储在一个名
  • 如何在 SQL Server 存储过程中对用户定义的表类型执行 ForEach?

    XX PROCEDURE dbo XXX X dbo IntType readonly AS BEGIN SET NOCOUNT ON how can I foreach X here and do process individually
  • 在 C#.NET 应用程序中使用 SQL Server 时间数据类型?

    如何使用 SQLtimeSQL Server 2008 中 C NET 中引入的数据类型 我一直在努力让它发挥作用 但没有成功 这是一个MSDN 文章 http msdn microsoft com en us library bb6751
  • SQL Server 列名区分大小写

    我使用的数据库具有 French CI AS 排序规则 CI 应该代表不区分大小写 但无论如何都是区分大小写的 我试图理解为什么 我断言这一点的原因是 使用 GIVEN 案例设置进行批量插入失败 但使用另一个 Given 案例设置则成功 例
  • 临时表是线程安全的吗?

    我正在使用 SQL Server 2000 它的许多存储过程广泛使用临时表 数据库的流量很大 我担心创建和删除临时表的线程安全性 假设我有一个存储过程 它创建了一些临时表 它甚至可以将临时表连接到其他临时表等 并且还可以说两个用户同时执行存
  • 如何在NiFi中映射流文件中的列数据?

    我有 csv 文件 其结构如下 Alfreds Centro Ernst Island Bacchus Germany Mexico Austria UK Canada 01 02 03 04 05 现在我必须将这些数据移入数据库 如下所示
  • 如何获得顶部带有千位分隔符的数字?

    SELECT count FROM table A 假设结果是8689 我怎样才能将它转换为8 689在 SQL Server 上 尝试这样 select replace convert varchar convert Money coun
  • 如何修改现有表以添加时区

    我有一个包含 500 多个表的大型应用程序 我必须将应用程序转换为时区感知 当前应用程序使用new java util Date GETDATE 与服务器的时区 即没有任何时区支持 我已将这项任务分为几个步骤 以便于开发 我确定的第一个步骤
  • SQL中的NULL和编程语言中的NULL之间的区别

    我刚刚遇到一个关于如何在 T SQL 可能还有其他形式的 SQL 中处理 NULL 的有趣场景 这个问题得到了很好的描述和回答这个问题 https stackoverflow com questions 2866714 how does a
  • 用户“”登录失败,无法打开登录请求的数据库“Database1.mdf”。登录失败。用户“rBcollo-PC\rBcollo”登录失败

    所以 我几乎解决了所有问题 但现在我要处理另一个问题 我使用了这个连接字符串 SqlConnection con new SqlConnection Data Source SQLEXPRESS Database Database1 mdf
  • 将 SQL Server 与 Dart 结合使用

    我还没有找到很好的答案 所以我想尝试一下得到答案 将 Microsoft SQL Server 与 Dart 结合使用的最佳方式是什么 我需要它能够从基本上任何操作系统 网络和移动设备上使用它 我觉得最好的方法可能是 GraphQL 但我对
  • 同时使用 GUID 和自动递增整数

    我一直在研究使用 GUID 作为数据库中的主键 到目前为止 利似乎大于弊 然而 我发现 GUID 可能不是我想要的 在我的应用程序中 用户应该能够根据用户友好的 ID 来识别对象 因此 例如 如果他们想要获取特定产品而不输入全名 则可以使用
  • 使用 CLR 返回表

    我想编写一个 CLR 过程 它接受一个文本并返回一个包含该文本中所有单词的表 但我不知道如何返回一张桌子 你能告诉我吗 Microsoft SqlServer Server SqlFunction public static WhatTyp
  • sql查询获取从一月到当月的所有数据,即使没有记录

    我不擅长 sql 所以任何帮助世界都很棒 我有一个 SQL 查询 可以获取从一月到当月注册的记录 我的代码示例 SELECT DatePart YEAR p createStamp as TheYear DatePart MONTH p c
  • SQL返回两行之间的秒差

    这个问题与SQL Server有关 我有下表 id size batch code product code additiontime 1 91 55555 BigD Red 2017 05 15 13 00 00 2 91 55555 B
  • 数据库字段中的逗号分隔值

    我有一个产品表 该表中的每一行对应一个产品 并由唯一的 ID 标识 现在 每个产品都可以有多个与该产品关联的 代码 例如 Id Code 0001 IN ON ME OH 0002 ON VI AC ZO 0003 QA PS OO ME

随机推荐

  • 加载和存储是唯一需要重新排序的指令吗?

    我读过很多关于内存排序的文章 它们都只说 CPU 重新排序加载和存储 CPU 我对 x86 CPU 特别感兴趣 是否只重新排序加载和存储 而不重新排序它拥有的其余指令 乱序执行保留了按程序顺序运行的错觉对于单线程 核心 这就像C C as
  • 停止服务内的线程

    我在服务中有一个线程 我希望能够在按下时停止该线程buttonStop在我的主要活动课上 在我的主要活动课上 我有 public class MainActivity extends Activity implements OnClickL
  • C++中通过引用传递指针

    我有一个函数 将迭代器传递给 char 缓冲区 这也是一个 char 该函数需要递增迭代器 无论如何 我发现将迭代器传递到函数中的一个好方法是通过引用传递指针 bool myFunction unsigned char iter 但是 我听
  • 将 CSV 文件转换为 Lua 中定义键的表

    我正在学习 Lua 来构建飞行模拟器的脚本 我有一个 CSV 文件 如下所示 Poti city Poti red 295731 42857144 617222 85714285 Lanchhuti city Poti red 299217
  • 使用Xcode和SDK构建胖静态库(设备+模拟器)4+

    理论上 我们似乎可以构建一个包含模拟器以及 iPhone 和 iPad 的静态库 然而 Apple 没有我能找到的相关文档 并且 Xcode 的默认模板也没有配置为执行此操作 我正在寻找一种可以在 Xcode 内完成的简单 可移植 可重用的
  • 是否可以在共享内存中存储多态类?

    假设我有课Base and Derived public Base 我使用 boost interprocess 库构建了一个共享内存段 是否可以有类似这样的代码 Base b new Derived write b one app wri
  • 用于 Asp.net Mvc 的 Google Chart HtmlHelper

    是否有任何 HtmlHelper 扩展谷歌图表API 我喜欢使用一些基本图表 例如饼图 条形图 Soe Moe 谷歌说你插入一个像这样的图表 img src alt Sample chart 所以编写一个像这样的 HtmlHelper 应该
  • 在 Java 中,如何解析 xml 模式 (xsd) 以了解给定元素的有效内容?

    我希望能够读取 XML 模式 即 xsd 并在遍历它时从中知道什么是有效属性 子元素和值 例如 假设我有一个 xsd 此 xml 将根据它进行验证
  • 如何回滚 EmberData 中的关系更改

    我有两种亲子关系模型 训练和锻炼 App Training DS Model extend exercises DS hasMany App Exercise App Exercise DS Model extend training DS
  • 将 WSSE SOAP 标头添加到 Web 参考

    我正在尝试将 WSSE SOAP 标头添加到我的服务调用中 但大多数示例都集中在 WCF 上 我没有使用 WCF 我添加了 Web 参考 WSDL 我尝试了各种方法但没有成功 例如 覆盖 GetWebRequest 方法 protected
  • 通过 Ajax 调用使用 Struts 2 的 HTTP 数组参数

    我在将数组参数发送到 Struts 2 操作类时遇到问题 我使用的是struts 2 1 8 1 这是一些示例代码 public class MyAction extends ActionSupport private String typ
  • C# ADAL AcquireTokenAsync() 不带弹出框

    我们正在编写一个 WCF 服务 该服务必须与 Dynamics CRM 2016 Online 集成 我正在尝试使用 ADAL 进行身份验证 使用方法AcquireTokenAsync 问题是 它会显示一个弹出框 提示用户输入凭据 当然 我
  • 定期获取位置(坐标),而不会显着增加电池消耗

    我正在开发一个 Android 应用程序 该应用程序需要定期 每 10 分钟 向网络服务发送当前位置 坐标 但是 我对更正确的方法 对设备电池更友好 感到有点困惑 我读了这个answer和她的方法 getLocation 看起来不错 但我不
  • 在 OpenGL ES (iPhone) 中绘制到离屏渲染缓冲区

    我正在尝试在 iPhone 上的 OpenGL ES 中创建离屏渲染缓冲区 我创建了这样的缓冲区 glGenFramebuffersOES 1 offscreenFramebuffer glBindFramebufferOES GL FRA
  • 如何让uipageviewcontroller转圈

    我有一个显示不同页面的 UIPageViewController 当前的行为是当我到达最后一页时它停止滚动 我现在想要实现的是 当在最后一页并向右滚动时 它会转到第一页 在第一页时 向左滚动即可转到最后一页 所以基本上让 PageViewC
  • 如何获取socket.io房间内的客户端数量?

    我的socket io版本1 3 5 我想获得特定房间的客户数量 这是我的代码 socket on create or join function numClients room socket join room 我使用此代码让客户进入房间
  • Python ValueError:无法解码 JSON 对象

    我正在尝试读取 json 并获取它的值 我有一个包含 JSON 档案的文件夹 我需要打开所有档案并从中获取值 这是代码 encoding utf 8 from pprint import pprint import json import
  • 用于使用半正矢函数计算轴承的 CLLocation 类别

    我正在尝试为 CLLocation 编写一个类别 以将方位返回到另一个 CLLocation 我相信我的公式做错了 微积分不是我的强项 返回的轴承始终处于关闭状态 我一直在研究这个问题并尝试应用被接受为正确答案的更改及其引用的网页 计算两个
  • 32 位和 64 位版本的 Windows 操作系统的页面大小是多少?

    我想知道 Windows 操作系统 32 位和 64 位版本中虚拟内存的默认页面大小 例如 页面大小Linux x86 是4 Kb call GetSystemInfo或更好GetNativeSystemInfo并寻找dw页面大小成员SYS
  • T-SQL:如何从一个表中获取其值与另一表中的值完全匹配的行?

    鉴于以下情况 declare a table pkid int value int declare b table otherID int value int insert into a values 1 1000 insert into