admin

Oracle中重复的行

sql

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

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

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

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

我目前正在这样做:

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

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

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

请帮忙…


阅读 222

收藏
2021-06-07

共1个答案

admin

您有两个选择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
2021-06-07