假设我有这张表"tab"
:
-------------------
id | value | name |
-------------------
1 | 12 | 'to' |
-------------------
2 | 13 | 'to' |
-------------------
3 | 14 | 'gh' |
-------------------
我想获得具有相同名称但不同值的行。在这种情况下,它将是第一行和第二行。 我做了这个请求:
select *
from tab t1
join tab t2
on t1.ID = t2.ID
where t1.VALUE != t2.VALUE
and t1.NAME = t2.NAME
但是给我的结果花了太长时间。
所以我想知道是否有另一种更快的解决方案?
谢谢!
答案 0 :(得分:1)
如果您不需要加入
,可以尝试此解决方案SELECT *
FROM tab t1
WHERE EXISTS ( SELECT 'x'
FROM tab t2
WHERE t2.id <> t1.id
AND t2.name = t1.name
AND t2.value <> t1.value
)
答案 1 :(得分:0)
试试这个
select t1.* from your_table as t1 inner join
(
select name from your_table
group by name
having count(distinct value)>1
) as t2 on t1.name=t2.name