在此处使用SQL。尝试选择该特定分区内列值唯一的所有行。
尝试过:
select *
from dataTable
where value in ( select value
from dataTable
group by tv_id, value
having count(*) > 1)
但是它返回了完整的表-我认为问题在于许多tv_id的值相同并且重叠。
我所拥有的:
tv_id value
1 1
1 2
1 2
1 3
2 1
2 1
2 2
2 3
2 4
3 1
3 1
3 2
我想要什么:
tv_id value
1 2
1 2
2 1
2 1
3 1
3 1
我有一堆tv_id,从本质上讲,我只希望每个tv_id中值不是唯一的行。 例如:我不要tv_id,值:3、2,因为它是数据中的唯一组合。
谢谢!
答案 0 :(得分:1)
也许这样的事情可以解决问题
Oracle Option
我包括此oracle版本,因为它使您可以更好地了解要查询的内容。
When a call (in thread) returns from locking the mutex,
then check
if the value in the global variable is for 'this' thread.
then
process the thread activities,
increment the global variable,
endif
endif
unlock the mutex
call nanosleep() to delay for a while to allow other threads to run
SQL
但这是一个标准的sql版本,几乎可以与任何数据库引擎一起使用
select tv_id, value
from dataTable
where (tv_id, value) in (
select tv_id, value
from dataTable
group by tv_id, value
having count(1) > 1
)
您需要查询同一张表两次,因为select tv_id, value
from dataTable d1
join (
select tv_id, value
from dataTable
group by tv_id, value
having count(1) > 1
) d2
on d1.tv_id=d2.tv_id
and d1.value=d2.value
在数据中产生了group by
,因此您不会像预期输出中那样检索重复的行。