具有相同表和连接逻辑但结果不同的两个查询

拉吉

我试图只在 1 个表中获取记录,即在 A 但不在 B case1 中:

 select count(distinct t.col1),count(distinct t.col2)
    from `table1` e
    right join
    (
    select distinct col1,col2
    from `table2_*`
    where _table_suffix between '20180101' and '20181231'
    )t
    on e.col1=t.col1
    where date(timestamp_seconds(ts))>='2018-01-01'
    and e.col1 is null
    ;

案例2:

select count(distinct col1)
from `table2_*`
where _table_suffix between '20180101' and '20181231'
and col1 not in (
select distinct col1 from `table1`
where date(timestamp_seconds(ts))>='2018-01-01'
)

在这 2 个代码中,case2 起作用,而 case1 给出 0 作为输出。我还尝试将案例 1 作为左连接与反转的表,但结果是相同的 0 行。我是 Big Query 和标准 sql 版本的新手,不确定为什么会发生这种情况。

保罗麦克斯韦

如果使用NOT IN不能让NULL作为“列表”的价值

SELECT count(DISTINCT t.col1)
FROM `table2_ * ` AS t
WHERE t._table_suffix BETWEEN '20180101' AND '20181231'
 AND col1 NOT IN (
  SELECT DISTINCT e.col1
  FROM `table1` AS e
  WHERE DATE (timestamp_seconds(e.ts)) >= '2018-01-01'
   AND e.col1 IS NOT NULL
  );

我个人更喜欢使用NOT EXISTS

SELECT count(DISTINCT t.col1)
FROM `table2_ * ` AS t
WHERE t._table_suffix BETWEEN '20180101' AND '20181231'
 AND NOT EXISTS (
  SELECT NULL
  FROM `table1` AS e
  WHERE DATE (timestamp_seconds(e.ts)) >= '2018-01-01'
   AND e.col1 = t.col1
  );

注意,这里的子查询 select 子句不需要返回任何值,所以select nullselect 1select *都有效。使用exitsornot exists时,重要的是子查询的 from & where 子句。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

尽管两个查询看起来具有相同的逻辑,但 Solr 查询返回不同的结果

来自分类Dev

连接具有不同列名和相同行的两个表

来自分类Dev

如何使两个查询中的两个结果(具有相同的列)显示在单个查询表中

来自分类Dev

如何使两个查询中的两个结果(具有相同的列)显示在单个查询表中

来自分类Dev

两个sqlalchemy查询返回相同的结果,即使它们具有不同的过滤器

来自分类Dev

如何检查两个不同的LINQ查询是否具有相同结果?

来自分类Dev

连接两个表并在两个不同的行中产生具有相同值的表

来自分类Dev

对具有相同数据的两个表运行查询的不同性能

来自分类Dev

查询以比较具有相同结构的两个表?

来自分类Dev

合并具有不同结构的两个表的结果

来自分类Dev

连接具有相同列号和名称的两个表

来自分类Dev

连接具有相同ID和日期的两个表

来自分类Dev

如何连接具有不同列的两个表

来自分类Dev

SQL Server查询结果需要在同一源表的两个具有相同名称的列中提供不同的值

来自分类Dev

MySQL和PHP:从两个具有相同日期的不同表中除以两个数字

来自分类Dev

具有相同WHERE子句的同一个表上的两个不同查询

来自分类Dev

从两个具有相同列名和组tehm的不同表中进行计数(如果名称相同)

来自分类Dev

带有两个连接和一个简单逻辑的 sql 查询

来自分类Dev

连接具有多个引用和两个值的两个表以进行添加

来自分类Dev

为什么两个不同查询的结果在phpMyadmin中具有不同的UI?

来自分类Dev

获取具有相同表的两个外键的表的结果

来自分类Dev

相同的联接查询:通过Phalcon和phpMyAdmin获得两个不同的结果

来自分类Dev

为什么两个相同但连接不同的字符串在用python调用的shell上下文中具有不同的结果?

来自分类Dev

为什么两个相同但连接不同的字符串在用python调用的shell上下文中具有不同的结果?

来自分类Dev

Postgresql 查询对于相同的引用至少有两个不同的结果

来自分类Dev

具有两个相同参数的调用方法将返回两个不同的结果

来自分类Dev

Shapiro Wilk检验中具有相同结果的两个不同样本

来自分类Dev

MySQL在两个表中排除具有相同ID的结果

来自分类Dev

连接两个表-一个具有不同值的公用列

Related 相关文章

  1. 1

    尽管两个查询看起来具有相同的逻辑,但 Solr 查询返回不同的结果

  2. 2

    连接具有不同列名和相同行的两个表

  3. 3

    如何使两个查询中的两个结果(具有相同的列)显示在单个查询表中

  4. 4

    如何使两个查询中的两个结果(具有相同的列)显示在单个查询表中

  5. 5

    两个sqlalchemy查询返回相同的结果,即使它们具有不同的过滤器

  6. 6

    如何检查两个不同的LINQ查询是否具有相同结果?

  7. 7

    连接两个表并在两个不同的行中产生具有相同值的表

  8. 8

    对具有相同数据的两个表运行查询的不同性能

  9. 9

    查询以比较具有相同结构的两个表?

  10. 10

    合并具有不同结构的两个表的结果

  11. 11

    连接具有相同列号和名称的两个表

  12. 12

    连接具有相同ID和日期的两个表

  13. 13

    如何连接具有不同列的两个表

  14. 14

    SQL Server查询结果需要在同一源表的两个具有相同名称的列中提供不同的值

  15. 15

    MySQL和PHP:从两个具有相同日期的不同表中除以两个数字

  16. 16

    具有相同WHERE子句的同一个表上的两个不同查询

  17. 17

    从两个具有相同列名和组tehm的不同表中进行计数(如果名称相同)

  18. 18

    带有两个连接和一个简单逻辑的 sql 查询

  19. 19

    连接具有多个引用和两个值的两个表以进行添加

  20. 20

    为什么两个不同查询的结果在phpMyadmin中具有不同的UI?

  21. 21

    获取具有相同表的两个外键的表的结果

  22. 22

    相同的联接查询:通过Phalcon和phpMyAdmin获得两个不同的结果

  23. 23

    为什么两个相同但连接不同的字符串在用python调用的shell上下文中具有不同的结果?

  24. 24

    为什么两个相同但连接不同的字符串在用python调用的shell上下文中具有不同的结果?

  25. 25

    Postgresql 查询对于相同的引用至少有两个不同的结果

  26. 26

    具有两个相同参数的调用方法将返回两个不同的结果

  27. 27

    Shapiro Wilk检验中具有相同结果的两个不同样本

  28. 28

    MySQL在两个表中排除具有相同ID的结果

  29. 29

    连接两个表-一个具有不同值的公用列

热门标签

归档