MYSQL查询每行有计数

时间:2015-01-23 11:42:19

标签: mysql

我试过这个并没有达到,然后我问我的问题

我想要什么

  1. 我想使用mysql distinct like method
  2. 搜索名称

    Select name as name1 from table where name like '%name%' limit 100

    1. 然后共10行有10个名字
    2. 现在我想只显示包含10条以上记录的名称,如果我们按照以下方式搜索
    3. Select name as name1 from table where name like '%name%' and (select name from table where count(name)>10) limit 100

      我的意思是我想要一个嵌套的mysql查询,其中我只想显示哪些记录应该包含多于每行的记录。

      如果前两条记录是

      ,则意味着 gaurav jain sumit singh

      然后gaurav jain只显示,如果我把一个选择查询计算gaurav jain的nuber,其中gaurav jain记录总数超过10

      所以我希望每行都有这个。仅在表

      中行名称也大于10的位置显示行

      我希望一切都清楚 3。

2 个答案:

答案 0 :(得分:0)

试试这个:

SELECT name AS name1 FROM table WHERE name LIKE'%name%' AND (SELECT COUNT(name) FROM table WHERE name LIKE '%name%')>10 LIMIT 100

答案 1 :(得分:0)

你所要求的并不完全清楚。在这种情况下,样本数据和预期输出在解释规范方面会有很长的路要走,远远超过“不起作用”的SQL构造。

从相当脱节的描述中,听起来好像你可能在查询返回的结果之后,例如:

  SELECT t.name
    FROM mytable t
   WHERE t.name = '%foo%'
   GROUP BY t.name
  HAVING COUNT(1) >= 10
   LIMIT 20

基本上说:从mytable访问行,只检索名称列中某处出现字符串'foo'的行。

将名称列中具有相同值的所有行折叠为一行。并获得每个组中折叠的行数的“计数”。如果行数(在折叠组中)至少为十,则返回名称。否则,请不要退货。如果要返回的二十多个不同的名称,则只返回前二十个。

还有其他查询模式会返回相同的结果。

可以使用相关的子查询,但通常效果不佳,在某些情况下尤其是对于没有适当索引的大型表,性能可能会很糟糕。

  SELECT t.name
    FROM mytable t
   WHERE t.name LIKE '%foo%'
   GROUP BY t.name 
  HAVING ( SELECT COUNT(1)
             FROM mytable c
            WHERE c.name = t.name
         ) >= 10
   LIMIT 20