1
實施例缺少的數據:MySQL的GROUP_CONCAT + IN()= :-(
表:框
boxID color
01 red
02 blue
03 green
表:boxHas
boxID has
01 apple
01 pear
01 grapes
01 banana
02 lime
02 apple
02 pear
03 chihuahua
03 nachos
03 baby crocodile
我想在每個內容查詢框,並返回一個表,每個ID,顏色和一列連接每個框的內容,所以我使用:
SELECT box.boxID, box.color,
GROUP_CONCAT(DISTINCT boxHas.has SEPARATOR ", ") AS contents
FROM box
LEFT JOIN boxHas ON box.boxID=boxHas.boxID
WHERE boxHas.has IN ('apple','pear')
GROUP BY box.boxID
ORDER BY box.boxID
,我得到的結果如下表:
boxID color contents
01 red apple, pear
02 blue apple, pear
我的問題是:爲什麼不是列出contents
列中的所有has
值?爲什麼我的WHERE
聲明也裁剪了我的GROUP_CONCAT
?
我想我一定要得到的表是:
boxID color contents
01 red apple, banana, grapes, pear
02 blue apple, lime, pear
雖然我想基於WHERE
語句來限制我boxID
結果,我做不要限制有效盒contents
場。 : -/
幫助?
這正是我需要的。在相同的查詢中可以使用-WAVE-與-WHERE-一起使用嗎? – Drew 2010-04-05 04:43:53
是的,他們可以在同一時間使用,只要記住WHERE是每行的第一個過濾器,並且HAVING是第二個過濾器,它作用於您的聚集(分組)數據 – 2010-04-05 04:48:31
再次感謝您。這是一個大規模的自定義查詢中最後一塊失蹤! :-) – Drew 2010-04-05 05:08:27