SQL请求:加入同一个表

时间:2016-04-27 09:56:27

标签: sql join

假设我有这张表"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

但是给我的结果花了太长时间。 所以我想知道是否有另一种更快的解决方案?

谢谢!

2 个答案:

答案 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