【问题标题】:SQLite Count() and Group By not getting the count of rowsSQLite Count() 和 Group By 没有获取行数
【发布时间】:2014-05-01 17:51:35
【问题描述】:

我用几种不同的方式编写了我的 SQLite 查询:一种是使用 Group By 和 Count(),另一种是使用执行 count() 的嵌套选择。

这是当前版本:

Select t.A,
       t.B,
       (Select Count(*) As CurrentCount From tableB b Where b.B = t.B) As CurrentCount
From   tableA t

为什么这在 SQLite 中不起作用,但在 SQL Server/T-SQL 中却运行良好(实际上是两个版本,另一个使用 group by)?是因为子/嵌套选择中的加入吗?

编辑:让我澄清一下,我每次计数都是 0...

Edit2:我尝试在我的嵌套选择中取出 where 子句,即使我知道表有记录,它仍然返回 0(准确地说是 133)

编辑(最终解决方案):这不是代码问题,而是数据问题。这不是任何人都会抓住的。我从 SQL Server 读取记录的“刷新”脚本正在读取所有 133 条记录,但实际插入我的 SQLite 数据库时缺少逗号,因此表为空,因此为 0 条记录。很抱歉浪费了大家的时间。

【问题讨论】:

  • @DanielE。不幸的是,事实并非如此。如您所见,除了嵌套选择之外,我为所有列都添加了别名作为前缀。我显然不能为那个...
  • 我看到了,但是将嵌套选择作为表加入并引用列...虽然,也许是因为您没有在子选择中命名列??
  • @DanielE。我没有加入那个嵌套选择,它的返回值是一列。我尝试为列添加别名,但它仍然不起作用。编辑:等等,我想我正在“加入” where 子句......
  • @ganders 。 . .我想你知道如何解决这个问题。我最好的猜测是 SQLite 中的数据类型不是你所期望的,所以没有匹配 b.B = t.B。您可以使用这些列的定义来编辑问题吗?或者,可能由于其他原因,SQLite 数据库中没有匹配项。

标签: sql sql-server sqlite tsql


【解决方案1】:

有点像

Select t.A
       ,t.B
       ,b.CurrentCount
From tableA t
INNER JOIN (Select B, Count(*) [CurrentCount] From tableB b GROUP BY B) as B
    ON  b.B = t.B

【讨论】:

  • 啊,你不会抓到的。我从 SQL Server 读取记录的“刷新”脚本正在读取所有 133 条记录,但实际插入我的 SQLite 数据库时缺少逗号,因此表为空,因此为 0 条记录。很抱歉浪费了您的时间。
  • @ganders 。 . .无意冒犯作者,但我投票反对接受,因为这个答案意味着查询的原始表述是错误的。我建议您编辑原始帖子,添加一个“编辑”部分来解释完全与数据相关的问题。
  • 无意冒犯,我也不会接受。 0 而不是错误应该已经放弃了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-20
  • 2021-08-01
  • 2014-05-20
  • 2021-12-19
  • 1970-01-01
相关资源
最近更新 更多