我试过这个并没有达到,然后我问我的问题
我想要什么
Select name as name1 from table where name like '%name%' limit 100
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。
答案 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