【发布时间】:2009-01-13 16:26:21
【问题描述】:
我从一个查询开始:
SELECT strip.name as strip, character.name as character
from strips, characters, appearances
where strips.id = appearances.strip_id
and characters.id = appearances.character.id
and appearances.date in (...)
这给了我一些结果:
strip | character
'Calvin & Hobbes' | 'Calvin'
'Calvin & Hobbes' | 'Hobbes'
'Pearls Before Swine' | 'Pig'
'Pearls Before Swine' | 'Rat'
'Pearls Before Swine' | 'Hobbes' # a guest appearance
'Pearls Before Swine' | 'Calvin' # a guest appearance
然后我还想获得COUNT 在结果集中(在任何条带中)使用字符的次数。所以我尝试了:
SELECT count(character.id), strip.name as strip, character.name as character
from strips, characters, appearances
where strips.id = appearances.strip_id
and characters.id = appearances.character.id
and appearances.date in (...)
但这给了我
[ERROR 11:20:17] Mixing of GROUP columns (MIN(),MAX(),COUNT(),...) with no GROUP columns is illegal if there is no GROUP BY clause
所以我尝试了:
SELECT count(character.id), strip.name as strip, character.name as character
from strips, characters, appearances
where strips.id = appearances.strip_id
and characters.id = appearances.character.id
and appearances.date in (...)
group by character.id
这给了我
count | strip | character
4 | 'Calvin & Hobbes' | 'Calvin'
4 | 'Calvin & Hobbes' | 'Hobbes'
2 | 'Pearls Before Swine' | 'Pig'
2 | 'Pearls Before Swine' | 'Rat'
也就是说,我丢失了关于哪些字符出现在哪些条带中的所有额外信息。
我想要的是这个:
count | strip | character
4 | 'Calvin & Hobbes' | 'Calvin'
4 | 'Calvin & Hobbes' | 'Hobbes'
2 | 'Pearls Before Swine' | 'Pig'
2 | 'Pearls Before Swine' | 'Rat'
4 | 'Pearls Before Swine' | 'Calvin'
4 | 'Pearls Before Swine' | 'Hobbes'
但我似乎无法弄清楚。如果重要的话,我在 MySQL 上。也许只需要两个查询。
【问题讨论】:
标签: sql