我有桌子
id = 1
name = 'one'
group = 1
id = 2
name = 'two'
group = 1
id = 3
name = 'three'
group = 2
我必须在一个SQL查询中获得所有单身的名字,在这种情况下,id = 3
和另一个sql所有名称均为倍数,在本例中为id = 1和id = 2,因为它们具有相同的组。
我想这应该是选择中的一个选择,但不确定。
提前致谢。
最佳答案
听起来您想使用与此类似的东西:
select id
from yourtable
group by `group`
having count(`group`) = 1
请参见SQL Fiddle with Demo。
然后,如果要返回所有详细信息,则可以将查询扩展为:
select *
from yourtable t1
where id in (select id
from yourtable t2
group by `group`
having count(`group`) = 1)
请参见SQL Fiddle with Demo。
如果要返回具有相同组的所有行,则可以使用:
select *
from yourtable t1
where `group` in (select `group`
from yourtable t2
group by `group`
having count(`group`) > 1)
见SQL Fiddle with Demo
然后,如果您想返回所有内容以及一个标识它是单个还是多个的标志,则可以使用与此类似的东西。您会注意到,我包含一个标志来显示什么
groups
具有一行,然后哪些组具有多个行:select *, 'single' Total
from yourtable t1
where `group` in (select `group`
from yourtable t2
group by `group`
having count(`group`) = 1)
union all
select *, 'multiple' Total
from yourtable t1
where `group` in (select `group`
from yourtable t2
group by `group`
having count(`group`) > 1)
见SQL Fiddle with Demo
关于mysql - 在mysql中获取多行和单行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15004274/