2

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

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

  • 姓名
  • 类型
  • 用户1
  • 用户2
  • 用户3
  • 日期

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

我目前正在这样做:

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

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

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

请帮忙...

4

3 回答 3

6

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

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

    select name, type, "date" from table1 where user = [WHATEVER YOUR USER INPUTS] order by name

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

    select name, type, "date", decode(YOUR_USER_INPUT, 1, user1, 2, user2, 3, user3) from table1 order by name

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

    从 table1 中选择不同的名称、类型、“日期”、user1、user2、user3

请提供一个例子,以便我们可以提供相应的帮助祝你好运,古德勒克

于 2009-05-03T11:58:24.347 回答
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
于 2009-05-03T16:51:45.763 回答
1

尝试 SELECT DISTINCT

于 2009-05-03T11:49:43.883 回答