【发布时间】:2018-01-20 20:30:08
【问题描述】:
SELECT *, SUM(CASE WHEN "token"."name" = '' THEN 5 ELSE 9 END) AS "n"
FROM "word"
LEFT OUTER JOIN "token" ON ("word"."id" = "token"."word_id")
where ("word"."id" = 1)
GROUP BY "word"."id";
这给出了 14 的预期结果,因为恰好有一个空令牌和一个非空令牌。
SELECT *, SUM(CASE WHEN "token"."name" = '' THEN 5 ELSE 9 END) AS "n"
FROM "word"
LEFT OUTER JOIN "token" ON ("word"."id" = "token"."word_id")
INNER JOIN "token" T3 ON ("word"."id" = T3."word_id")
where ("word"."id" = 1)
GROUP BY "word"."id";
这个查询输出n=28,是14的两倍。
这是为什么呢?
【问题讨论】:
-
你不能有 '*' 和 GROUP BY。毫无意义。
标签: sql postgresql django-models