2009-05-03 51 views
2

如何防止在選擇查詢中選擇重複的行?Oracle中的重複行

我有一個具有以下字段的表:

  • USER1
  • user2的
  • 用戶3
  • 日期

我的查詢需要我Ť o僅在用戶在前端輸入的時間爲特定用戶選擇數據。假設用戶輸入1,則選擇查詢應僅爲user1檢索數據。

我目前在做這樣的:

select name,type,date from table1 order by user1; 

但我的結果讓多餘的行?

我做錯了什麼?如何避免這些重複的行?

請幫助...

回答

4

您有兩個選擇SELECT DISTINCT或使用GROUP BY子句。您還有一個日期列,在Oracle中也意味着有時間安全起見,應該截斷日期列。即使你知道時間不是插入部分截斷無論如何。很好的做法是,當你看到日期時,你認爲它有時間。

您將遇到的下一個問題是您不能在不屬於SELECT部分​​的列上有ORDER BY。

我的建議是GROUP BY。


SELECT user1, name, type, TRUNC(date) date 
FROM Table1 
GROUP BY user1, name, type, TRUNC(date) 
ORDER BY user1 
6

我不知道我是否完全搞定你的問題。但我會盡量嘗試:

  1. 如果你想根據用戶輸入的嘗試對某些用戶過濾:

    選擇名稱,類型,從表1 其中user = [無論你的用戶「日期」 材料] 順序被

  2. 如果你想選擇一個不同的列(用戶1,用戶2,用戶3)根據用戶輸入的嘗試:

    選擇名稱,類型,「日期」,解碼(YOUR _USER_INPUT,1,用戶1,2,用戶2,3,用戶3) 從表1 順序被

  3. 如果只是想要不同的結果,儘量選擇不同

    選擇不同的名稱,類型, 「日期」,用戶1,用戶2,用戶3 從表1

提供了一個例子,所以我們可以相應幫助。祝你好運,gudluck