Mysql 在where子句中使用子查询结果

Mysql 在where子句中使用子查询结果,mysql,sql,subquery,Mysql,Sql,Subquery,我的目的是,如果主机名值在表中不止一次出现,则从drpl_注释表中获取所有主机名 你能帮我建立这个查询吗?你可以简单地使用分组依据和拥有 select distinct (`hostname`) as h from `drpl_comment` c where (select count(cid) from `drpl_comment` where hostname == h ) > 0 您只需使用groupby和HAVING select distinct (`hostnam

我的目的是,如果主机名值在表中不止一次出现,则从drpl_注释表中获取所有主机名


你能帮我建立这个查询吗?

你可以简单地使用
分组依据
拥有

select distinct (`hostname`)  as  h from `drpl_comment` c where 
(select count(cid) from  `drpl_comment` where  hostname == h ) > 0

您只需使用
groupby
HAVING

select distinct (`hostname`)  as  h from `drpl_comment` c where 
(select count(cid) from  `drpl_comment` where  hostname == h ) > 0
试试这个

SELECT  hostname
FROM    drpl_comment
GROUP   BY hostName
HAVING  COUNT(cid) > 0
分组依据。。。让
准确地解决这个问题:)

更新: 如jw所述,
DISTINCT
的使用不会影响此上下文中的查询结果。这样就可以从查询中删除它。

试试这个

SELECT  hostname
FROM    drpl_comment
GROUP   BY hostName
HAVING  COUNT(cid) > 0
分组依据。。。让
准确地解决这个问题:)

更新:
jw所述,
DISTINCT
的使用不会影响此上下文中的查询结果。因此可以从查询中删除它。

现在的问题到底是什么(除了查询中的==错误)?编辑:问题已编辑:-)现在的问题到底是什么(除了查询中的==错误)?编辑:问题已编辑:-)当使用
主机名
分组时,
主机名
的结果总是唯一的。是的,你说得对:)谢谢你指出。更新我的回答使用
主机名
分组时,
主机名
的结果总是唯一的。是的,你说得对:)谢谢你指出。更新我的answerNice解决方案-需要注意的一件事是他说“表中出现了不止一次”-因此我不确定他的代码或描述中是否有打字错误,如果确实不止一次,则应该是>1很好的解决方案-需要注意的一件事是他说“表中出现了不止一次”-所以我不确定他的代码或描述中是否有拼写错误,如果确实不止一次,那么应该大于1