Oracle中的重复行

时间:2009-05-03 11:44:08

标签: sql oracle distinct

如何防止在选择查询中选择重复行?

我有一个包含以下字段的表:

  • 名称
  • 用户1
  • 用户2
  • 用户3
  • 日期

我的查询要求我仅在用户在前端输入的时间为特定用户选择数据。假设用户输入1,则选择查询应仅检索user1的数据。

我目前正在这样做:

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

但是我在结果中得到了多余的行?

我做错了什么?如何避免这些重复的行?

请帮忙......

3 个答案:

答案 0 :(得分:6)

我不知道我是否完全得到你的问题。但无论如何我会尝试:

  1. 如果您想根据用户输入过滤某些用户,请尝试:

    选择名称,类型,“日期”   来自table1  用户= [无论您的用户输入]  按名称排序

  2. 如果您想根据用户输入选择不同的列(user1,user2,user3),请尝试:

    选择名称,类型,“日期”,解码(YOUR_USER_INPUT,1,user1,2,user2,3,user3)   来自table1  按名称排序

  3. 如果只是想要不同的结果,请尝试选择不同

    选择不同的名称,类型,“日期”,user1,user2,user3   来自table1

  4. 执行提供示例,以便我们相应提供帮助。祝你好运, gudluck

答案 1 :(得分: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

答案 2 :(得分:1)

尝试SELECT DISTINCT