Mysql 如何筛选包含最大值2倍的内容的列,并且其中一个包含内容?

Mysql 如何筛选包含最大值2倍的内容的列,并且其中一个包含内容?,mysql,sql,Mysql,Sql,我有一张这样的桌子 user - item - ip user1 - item1 - ip1 user2 - item2 - ip1 user3 - item3 - ip1 user1 - item1 - ip2 user2 - item2 - ip2 我想列出属于任何用户并包含item2的每个ip2。此外,此ip2最多应存在于2列中。如果它存在2次以上,例如在ip1中,则不要选择它 如何执行此操作?按ip分组并在having子句中设置条件: select ip from tablename

我有一张这样的桌子

user - item - ip
user1 - item1 - ip1
user2 - item2 - ip1
user3 - item3 - ip1

user1 - item1 - ip2
user2 - item2 - ip2
我想列出属于任何用户并包含
item2
的每个
ip2
。此外,此
ip2
最多应存在于2列中。如果它存在2次以上,例如在
ip1
中,则不要选择它


如何执行此操作?

按ip分组并在having子句中设置条件:

select ip
from tablename
group by ip
having sum(item = 'item2') > 0 and count(*) <= 2 and sum(user = 'user1') > 0;
选择ip
从表名
按ip分组
总和(项='项2')>0,计数(*)为0;

大概中间列有一个名称。@GordonLinoff已修复。这更接近。我们还需要检查列表中的第二项是否属于特定的
用户id
。你能做到吗?当你说max 2时,这意味着只能有1。在这种情况下会发生什么?还有,如果第二个也有第2项呢?这实际上是我想要的版本,但仍然缺少该部分<代码>按服务器从tablename组中选择ip_ip,其总和(item='item2')>0,计数(*)为2