如果我必須找到不止一次查看同一視頻的所有用途,那麼我正在使用以下查詢。oracle sql - 與加入並加入?
SELECT userid AS users,video_id
FROM watching_list GROUP BY userid , video_id HAVING COUNT(*) > 1;
^^它確實給你,對不對?如果watching_list包含用戶觀看的userid和videoid並且包含日期時間戳。
我想要做的是加入到用戶表,基於用戶名,以查找用戶的名稱等,而不僅僅是用戶名。
我試過做簡單的連接,當然它打破了我。
你不需要的子查詢可言,簡單的加入和加入到組將工作。只要用戶標識保留在組中,那麼通過基於用戶向組添加更多信息將不會執行任何操作 – 2012-04-26 03:51:50
我會查看真實數據集上的執行計劃。 我可以想象這比連接方法更有效,因爲如果只有少數用戶滿足「不止一次」的條件,那麼內聯視圖將首先執行,然後是用於訪問用戶表的嵌套循環連接。在連接方法中,可能會執行在watching_list和用戶之間的哈希連接,然後執行聚合。事實上,在join-first查詢中聚合的成本更高,因爲group by子句中有更多的字節。 由於這些原因,我贊成Marc對Justin的解決方案。 – 2012-04-26 08:12:19
@DavidAldridge我同意這可能會更好,但會建議OP配置文件兩種方法來確保。 – 2012-04-26 12:36:00