【问题标题】:finding value in a list created via subquery在通过子查询创建的列表中查找值
【发布时间】:2017-11-09 17:45:34
【问题描述】:

感谢 Stack-Community,

这对你们大多数人来说可能很明显,但我只是不明白为什么它不起作用。

我正在使用 Northwind 数据库,假设我正在尝试查找出现或未出现两次但被列出的频率超过两次或更少的国家/地区。

我已经想出了其他的方法来做一个有声明,所以我不是在寻找替代方案,而是试图理解为什么我最初的尝试不起作用。

我看着它,看着它,这对我来说很有意义。有人可以解释是什么问题吗?

SELECT  country, count(country)
FROM Customers
WHERE 2 not in (SELECT count(country) FROM Customers GROUP BY country) 
GROUP BY country
;

【问题讨论】:

  • WHERE 2 not in 没有将您的表与子查询连接

标签: sql tsql subquery aggregate-functions where-in


【解决方案1】:

您需要相关子查询:

SELECT  country, count(country)
FROM Customers c
WHERE 2 not in (SELECT count(country) FROM Customers c2 
                WHERE c2.country = c.country ) 
GROUP BY country;

否则你会得到类似的东西:

SELECT  country, count(country)
FROM Customers c
WHERE 2 not in (1,2,3) -- false in every case and empty resultset
GROUP BY country;

想象一下你有:

1, 'UK'    -- 1
2, 'DE'    -- 2
3, 'DE'
4, 'RU'    -- 1

现在你会得到等价的

SELECT  country, count(country)
FROM Customers c
WHERE 2 not in (1,2,1) -- false in every case and empty resultset
GROUP BY country;

 -- 0 rows selected

【讨论】:

  • 谢谢!这很有帮助!我现在可以学习这一点,知道我在寻找什么。
猜你喜欢
  • 2019-12-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-03
  • 1970-01-01
  • 2017-05-10
  • 1970-01-01
  • 2022-01-21
相关资源
最近更新 更多