2011-07-27 43 views
1

我無法制定SQL語句來返回我想要的值。我需要根據用戶ID,第二列的值和第三列值選擇數據,其中該列中的值不止出現一次。所有列都在同一個表內。Oracle SQL-列值與條件不一樣

下面是我的查詢現在的樣子的大致輪廓,但最後的AND語句顯然只是給你一個我想要的東西的想法。可能會縮小結果的COUNT語句可能對我無效。

SELECT * 
FROM table 
WHERE user_id = 123 
AND second_id = 1 
AND third_id having COUNT(1) > 1; 

回答

4

如果你需要的是列user_id說明,second_id,third_id那就試試這個:

SELECT user_id, second_id, third_id, COUNT(1) 
FROM table 
WHERE user_id = 123 
AND second_id = 1 
GROUP BY user_id, second_id, third_id 
HAVING COUNT(1) > 1; 

如果您有其他的列,並希望得到這些領域也試試這個(甲骨文以上9.2 & ):

WITH qry AS 
(
    SELECT a.*, 
      COUNT(1) OVER(PARTITION BY user_id, second_id, third_id) rpt_count 
FROM table a 
WHERE user_id = 123 
AND second_id = 1 
) 
SELECT * 
    FROM qry 
    WHERE rpt_count > 1 
+0

第二個選項看起來像我所需要的,謝謝。但是,我認爲如果可以提供幫助,我還需要執行一個步驟 - 我需要將這些結果作爲子查詢的一部分使用,因此完整查詢將查看這些結果,並將MIN(fourth_id)從結果。 – Major