1

这个问题看起来比问题本身更复杂。所以这里是例子。我在MySQL中有一个“测试”表,只有一个字段:ObjectId INTEGER(10)。ObjectId 字段中的值:
1
1
1
2
2

我在 MySQL 查询浏览器中执行以下语句:

SELECT DISTINCT ObjectId obid, (SELECT count(*) FROM Test WHERE ObjectId = obid) AS cnt FROM Test

结果是我所期望的:在上面的示例中,有 2 行包含:
第 1 列:ObjectId 值
第 2 列:相应 ObjectId 值出现在列中的次数。

obid        cnt
1           3
2           2

现在我在SQLite数据库中创建的相同表(结构和数据)上执行相同的语句。我收到一条错误消息,提示“没有这样的列:obid”。

上面提到的 SELECT 对我的目的来说非常方便。被迫用一系列选择(比如使用光标)替换它看起来有点奇怪。我是 SQLite 的新手,所以也许我错过了一些东西。我已经调查了很多结果为零。

那么,有没有人知道是否有类似的单个 SELECT 语句会在 SQLite 数据库上产生相同的结果?

谢谢

4

1 回答 1

1

您正在以复杂的方式进行操作。:) GROUP BY应该得到你想要的。

SELECT ObjectID AS obid, COUNT(1) AS cnt
FROM Test
GROUP BY ObjectID
于 2012-05-21T22:17:36.430 回答