【发布时间】: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