标题可能令人困惑,但我会尝试解释我正在尝试做什么。 我有一个MySQL表,我需要的字段是:
现在,我正在编写一个查询,它返回该表中的每个结果,其中“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”。 我认为这样的事情是可能的,但我无法理解它。请问你能帮帮我吗? 谢谢。
答案 0 :(得分:1)
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