T-SQL列,指示一个或多个记录存在于单独的表中

布莱恩·李明(Brian Leeming)

我想要一个查询,该查询tableA中选择所有记录,而没有其他记录。但是,我希望查询包含一列,该列指示tableB中存在1个或更多记录

从tableA到tableB的左外部联接不起作用,因为如果tableB中有2条记录与tableA中的一条记录相关,我将在结果集中获得2条记录。我只想要1。

RIGHT OUTER JOIN不起作用,因为我的查询返回了tableB中与tableA中的任何记录都不匹配的所有记录。我不想从tableB中获取与tableA中至少1条记录不匹配的记录。

INNER JOIN也失败,因为我没有获得tableA中的所有记录;仅那些在tableB中包含匹配记录的记录。

好像我需要这样的查询:

SELECT tableA.ID, IF EXISTS row in tableB THEN 1 ELSE 0 
FROM tableA <some sort of join> tableB on tableA.ID = tableB.FKtoTableA

由于目标只是测试存在性,因此我们强烈建议使用内联EXISTS子句:

SELECT A.*
     , CASE
           WHEN EXISTS (
               SELECT 1
               FROM TableB B
               WHERE B.Id = A.Id
           ) THEN 1
           ELSE 0 
       END 
FROM TableA A

通常不仅比使用LEFT JOIN+IS NOT NULL或a的解决方案要快COUNT而且还具有使语义与您的问题陈述相符的优点。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

多个表的逆集,其中不是所有记录都存在于一个表中

来自分类Dev

要求记录存在,如果它们存在于MySQL的另一个表中

来自分类Dev

SQL记录存在于另一个具有LEFT JOIN和GROUP BY的表中

来自分类Dev

如果所有记录都存在于SQL Server的另一个表中,则返回行列表

来自分类Dev

SQL记录存在于另一个具有LEFT JOIN和GROUP BY的表中

来自分类Dev

如何获得此查询以打印仅存在于一个表中的记录?

来自分类Dev

返回表中的所有行,并用新列指示它们是否存在于另一个表中

来自分类Dev

返回表中的所有行,并用新的列指示它们是否存在于另一个表中

来自分类Dev

列值必须存在于另一个表的非主列中

来自分类Dev

列值必须存在于另一个表的非主列中

来自分类Dev

生成两列之间的所有可能组合和一个指示符,以显示该组合是否存在于源表中

来自分类Dev

生成一个不存在于SQL Server表中的随机数

来自分类Dev

SQL 只返回存在于另一个表中的 id

来自分类Dev

order by 列存在于另一个表中并删除多余的行

来自分类Dev

从多个表中选择仅存在于其中一个表中的一行

来自分类Dev

T-SQL“联接”表到另一个表并收集前3个记录作为列

来自分类Dev

一个临时表可以存在于 pgAdmin 4 的多个选项卡中吗?

来自分类Dev

T-SQL将多个记录连接成一个记录

来自分类Dev

T-SQL将多个记录连接成一个记录

来自分类Dev

标记一个表中的行,其中值存在于连接表中?

来自分类Dev

SQL-如何根据用户是否存在于另一个表中来选择该用户?

来自分类Dev

检查一个值是否存在于两个或多个数组中

来自分类Dev

如果某些记录存在于同一表中,则设置列值

来自分类Dev

交叉表存在于一个数据库中,而不存在于另一个数据库中

来自分类Dev

我将如何使用EQUI JOIN向我显示一个表中存在于另一表中的记录?

来自分类Dev

SQL查询检查值基于另一个列值存在于查找中

来自分类Dev

可以简化查找一个元素是否存在于多个列表中的问题?

来自分类Dev

删除并重新创建过程(如果它存在于T-SQL中)不起作用

来自分类Dev

返回存在于一个表中但不在另一个表中的结果

Related 相关文章

  1. 1

    多个表的逆集,其中不是所有记录都存在于一个表中

  2. 2

    要求记录存在,如果它们存在于MySQL的另一个表中

  3. 3

    SQL记录存在于另一个具有LEFT JOIN和GROUP BY的表中

  4. 4

    如果所有记录都存在于SQL Server的另一个表中,则返回行列表

  5. 5

    SQL记录存在于另一个具有LEFT JOIN和GROUP BY的表中

  6. 6

    如何获得此查询以打印仅存在于一个表中的记录?

  7. 7

    返回表中的所有行,并用新列指示它们是否存在于另一个表中

  8. 8

    返回表中的所有行,并用新的列指示它们是否存在于另一个表中

  9. 9

    列值必须存在于另一个表的非主列中

  10. 10

    列值必须存在于另一个表的非主列中

  11. 11

    生成两列之间的所有可能组合和一个指示符,以显示该组合是否存在于源表中

  12. 12

    生成一个不存在于SQL Server表中的随机数

  13. 13

    SQL 只返回存在于另一个表中的 id

  14. 14

    order by 列存在于另一个表中并删除多余的行

  15. 15

    从多个表中选择仅存在于其中一个表中的一行

  16. 16

    T-SQL“联接”表到另一个表并收集前3个记录作为列

  17. 17

    一个临时表可以存在于 pgAdmin 4 的多个选项卡中吗?

  18. 18

    T-SQL将多个记录连接成一个记录

  19. 19

    T-SQL将多个记录连接成一个记录

  20. 20

    标记一个表中的行,其中值存在于连接表中?

  21. 21

    SQL-如何根据用户是否存在于另一个表中来选择该用户?

  22. 22

    检查一个值是否存在于两个或多个数组中

  23. 23

    如果某些记录存在于同一表中,则设置列值

  24. 24

    交叉表存在于一个数据库中,而不存在于另一个数据库中

  25. 25

    我将如何使用EQUI JOIN向我显示一个表中存在于另一表中的记录?

  26. 26

    SQL查询检查值基于另一个列值存在于查找中

  27. 27

    可以简化查找一个元素是否存在于多个列表中的问题?

  28. 28

    删除并重新创建过程(如果它存在于T-SQL中)不起作用

  29. 29

    返回存在于一个表中但不在另一个表中的结果

热门标签

归档