我開始查詢:如何在不丟失查詢中的信息的情況下混合使用COUNT()和非COUNT()列?
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'
也就是說,我失去所有的有關哪些字符出現在哪個st的額外信息撕裂。
我想獲得的是:
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上。也許它只需要兩個查詢。
MySQL不會執行分區,後者給我錯誤消息「子查詢返回多於一行」。 – 2009-01-13 16:50:59