【问题标题】:A little SQL question i cant seem to figure out一个我似乎无法弄清楚的小 SQL 问题
【发布时间】:2023-02-11 02:36:03
【问题描述】:

我正在为考试而学习,但我遇到了一些麻烦。

考虑以下两个表,T 和 T3

a b

1 2

1 null

2 3

3 4

4 5

3 null

T3

1 4

1 5

2 5

null 5

我运行了以下查询:

SELECT T3.b, (
    SELECT COUNT(*) 
    FROM t T5
    WHERE T5.a = T3.b)
FROM T3 

结果得到了这个:

4 1 

5 0

5 0

5 0

我不明白为什么这是我得到的所以我在第一个查询中单独运行子查询并得到一个只有 2 个条目的列。 谁能解释我在这里缺少什么?谢谢 :)

【问题讨论】:

  • 请不要发布代码或数据的图像。编辑您的问题以发布格式化文本。
  • 自己跑的时候用的是GROUP BY吗?这将合并行。
  • 您可以使用SELECT DISTINCT 来删除重复项。

标签: mysql sql select subquery


【解决方案1】:
SELECT COUNT(*) 
FROM t T5
WHERE T5.a = T3.b)

在您的示例中,您只是针对 T3 字段“b”的每条记录计算表 T(别名为 T5)中的记录

外部查询简单地列出表 T3 的每条记录

只有 1 条记录与 T.b 匹配,并且是第一条。这就是为什么你得到 1

【讨论】:

  • 我认为我无法理解如何同时选择 T3.b 和 COUNT(*) ,它是一个有 4 行的列,它返回一个值
猜你喜欢
  • 2021-06-04
  • 2016-03-12
  • 1970-01-01
  • 2011-07-08
  • 2020-11-14
  • 1970-01-01
  • 2014-05-19
  • 2021-04-26
  • 1970-01-01
相关资源
最近更新 更多