這裏是我的查詢:MySQL的SELECT JOIN和GROUP BY
SELECT v2.mac, v2.userag_hash, v2.area, count(*), count(distinct v2.video_id)
FROM video v2 JOIN (
SELECT distinct v.mac, v.userag_hash
from video v
WHERE v.date_pl >= '2012-01-30 00:00' AND
v.date_pl <= '2012-02-05 23:55'
ORDER BY rand() LIMIT 50
) table2
ON v2.mac = table2.mac AND
v2.userag_hash = table2.userag_hash AND
v2.date_pl >= '2012-01-30 00:00' AND
v2.date_pl <= '2012-02-05 23:55'
GROUP BY v2.mac, v2.userag_hash
我在數據庫中有一個表「視頻」,它包含幾千個用戶的數據,現在我要隨機選擇50個用戶和計算根據所選擇的行(每個用戶的獨特組合標識),這個查詢的結果是:
usermac1, userag_hash1, area1, 10, 5
usermac2, userag_hash2, area2, 20, 8
...
但是,如果我沒有在查詢的末尾使用「GROUP BY」,那麼它會只返回一行: usermac,userag_hash,areax,1500,700(不知道此行代表)
我想知道,如果「1500,700」是以前的結果的最後兩列的總和。像1500 = 10 + 20 + ... 700 = 5 + 8 + ...
你是對的各個方面,除了一兩件事。如果'GROUP BY'中使用的列(在本例中爲'v2.mac,v2.userag_hash')唯一標識'v2'的行,那麼不存在未定義的行爲。 – 2012-04-12 13:08:47