选择不共享名称的SQL表的所有行

时间:2017-08-03 22:13:49

标签: sql postgresql

我有一张表,称之为widgets,其中包含name列和created_at列。我想运行一个查询,该查询返回widgets的所有行的计数,这些行具有相同的名称并且彼此之间的毫秒创建。

这是我提出的查询,但它返回的数字大于表中的总行数,有人可以指出我出错的地方吗?

SELECT COUNT (DISTINCT "t1"."id")
FROM 
  "tasks" "t1" ,"tasks" "t2"
WHERE 
  "t1"."name" = "t2"."name" 
AND 
  date_trunc('milliseconds',"t1"."created_at") = date_trunc('milliseconds',"t2"."created_at")

1 个答案:

答案 0 :(得分:1)

您应该添加条件:

and "t1"."id" <> "t2"."id"

其中“id”是主键。如果缺少主键,您可以使用ctid

and "t1".ctid <> "t2".ctid