如何防止在选择查询中选择重复行?
我有一个包含以下字段的表:
- 姓名
- 类型
- 用户1
- 用户2
- 用户3
- 日期
我的查询要求我只在用户在前端输入的时间为特定用户选择数据。假设用户输入 1,那么选择查询应该只为 user1 检索数据。
我目前正在这样做:
select name,type,date from table1 order by user1;
但是我在结果中得到了多余的行??
我做错了什么?如何避免这些重复的行?
请帮忙...
我不知道我是否完全明白你的问题。但无论如何我都会尝试:
如果您想根据用户输入过滤某些用户,请尝试:
select name, type, "date" from table1 where user = [WHATEVER YOUR USER INPUTS] order by name
如果您想根据用户输入选择不同的列(user1、user2、user3),请尝试:
select name, type, "date", decode(YOUR_USER_INPUT, 1, user1, 2, user2, 3, user3) from table1 order by name
如果您只是想要不同的结果,请尝试选择不同的
从 table1 中选择不同的名称、类型、“日期”、user1、user2、user3
请提供一个例子,以便我们可以提供相应的帮助。祝你好运,古德勒克。
您有两个选择 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
尝试 SELECT DISTINCT