得到重复的记录我有如下与结构表: 无法从表
为user_id具有值在特定的时间间隔各自的项目。项目值可以是文本或整数取决于项目。
我想检查是否有任何两个或多个UserId为相同的值,这意味着它们的项目在相同的值和相同的时间间隔内是相同的。
如上表所示UserId 213456和UserId 213458具有相同的记录。 我试过使用游标和循环,但它花费的时间太长。我的表有超过5000万UserId。有没有办法以有效的方式做到这一点?
我也尝试使用group by子查询,但所有的尝试都未能创建一个好的查询。
我创建使用How do I find duplicate values in a table in Oracle?
select t1.USERID, count(t1.USERID)
from USERS_ITEM_VAL t1
where exists (select *
from USERS_ITEM_VAL t2
where t1.rowid <> t2.rowid and
t2.ITEMID = t1.ITEMID and
t2.TEXT_VALUE = t1.TEXT_VALUE and
--t2.INTEGER_VALUE = t1.INTEGER_VALUE and
t2.INIT_DATE = t1.INIT_DATE and
t2.FINAL_DATE = t1.FINAL_DATE)
group by t1.USERID having count(t1.USERID) > 1 order by count(t1.USERID);
下面的查询,但问题是它的工作不包括INTEGER_VALUE列,但不给我输出的时候,当我包括在INTEGER_VALUE列的加入,虽然我在INTEGER_VALUE列数据是一样的。 这里是我的表的结构:接近这个利用自加入
USERID - NUMBER
ITEMID - NUMBER
TEXT_VALUE - VARCHAR2(500)
INTEGER_VALUE - NUMBER
INIT_DATE - DATE
FINAL_DATE - DATE
https://stackoverflow.com/questions/59232/how-do-i-find-duplicate-values-in-a-table-in-oracle –