如何防止在选择查询中选择重复行?
我有一个包含以下字段的表:
我的查询要求我仅在用户在前端输入的时间为特定用户选择数据。假设用户输入1,则选择查询应仅检索user1的数据。
我目前正在这样做:
select name,type,date from table1 order by user1;
但是我在结果中得到了多余的行?
我做错了什么?如何避免这些重复的行?
请帮忙......
答案 0 :(得分:6)
我不知道我是否完全得到你的问题。但无论如何我会尝试:
如果您想根据用户输入过滤某些用户,请尝试:
选择名称,类型,“日期” 来自table1 用户= [无论您的用户输入] 按名称排序
如果您想根据用户输入选择不同的列(user1,user2,user3),请尝试:
选择名称,类型,“日期”,解码(YOUR_USER_INPUT,1,user1,2,user2,3,user3) 来自table1 按名称排序
如果只是想要不同的结果,请尝试选择不同
选择不同的名称,类型,“日期”,user1,user2,user3 来自table1
请执行提供示例,以便我们相应提供帮助。祝你好运, 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