标题可能令人困惑,但我会试着解释我想要做什么.
我有一个 MySQL表,我需要的字段是:
> poster_ip
> poster_id
现在,我正在编写一个查询,它返回该表中的每个结果,其中“poster_ip”重复计数等于或大于2(它显示我是否有更多结果使用相同的“poster_ip”).
这很简单:
SELECT *
FROM NAME_OF_TABLE
INNER JOIN (
SELECT poster_ip
FROM NAME_OF_TABLE
GROUP BY poster_ip
HAVING COUNT( poster_ip ) >1
)dup ON NAME_OF_TABLE.poster_ip = dup.poster_ip
如果没有优化它或者它给DB服务器带来巨大负载,我不在乎,我没有那个问题.它工作正常.另外,我需要“SELECT *”,因为我需要查看整行.
现在这里是棘手的部分(至少对我而言):
我需要该查询只返回“poster_ip”的副本,其中相同的“poster_ip”由不同的“poster_id”使用.也就是说,我需要检查不同的“poster_id”是否使用相同的“poster_ip”.
我认为这样的事情是可能的,但我无法理解它.请问你能帮帮我吗?
谢谢.
最佳答案
SELECT DISTINCT t1.*
FROM NAME_OF_TABLE t1
INNER JOIN NAME_OF_TABLE t2
ON t1.poster_ip = t2.poster_ip
AND t1.poster_id <> t2.poster_id