假设我有这张桌子"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
但是花了很长时间才给我结果。所以我想知道是否还有另一个更快的解决方案?
谢谢!
如果不需要加入,可以尝试此解决方案
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
)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句