2017-08-03 16 views
0

テーブルがあり、namecreated_atなどのカラムを持つwidgetsと呼びます。私は同じ名前を共有し、お互いのミリ秒以内に作成されたwidgetsのすべての行のカウントを返すクエリを実行したいと思います。名前を共有しないSQLテーブルのすべての行を選択してください。

これは私が思いついたクエリですが、テーブルの行の総数よりも大きな数値を返します。誰かが間違っている箇所を指摘できますか?

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

Klinの提案を追加しましたか?それは問題を解決するか、すでにその行があることを意味しますか? –

+0

彼の提案はうまくいきましたので、私は自分の質問を更新しました。 – TheDelChop

+0

あなたはそうしてはいけません。今誰かが来て、答えが質問と同じであることを見て、どこに問題があるか理解していないからです。代わりにただ答えを受け入れ、他の人は問題を解決することを理解するでしょう –

答えて

1

あなたは条件を追加する必要があります

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

"ID" は主キーです。主キーがない場合、ctidを使用できます。

and "t1".ctid <> "t2".ctid 
関連する問題