问题描述
我已经阅读了多篇文章,现在我对以下2条陈述感到困惑。
- 如果我们使用不带分组的表,那么整个表将作为“单个分组”。
- 如果我们使用不带分组的话,那么每个表都将作为一个单独的分组。
在MysqL中哪个是正确的? 例如,我有一个名为ABC的表,如下所示:
@H_404_10@| Wage |
_____________
| 4 |
| 8 |
| 28 |
| 90 |
如果我们使用以下查询
@H_404_10@select wage
from ABC
having wage > 1
然后将打印所有记录。因此,每一行都作为单个群体。
但是如果我们使用:
@H_404_10@select wage
from ABC
having wage = max(wage)
没有记录被打印。因此,整个表可以作为一个组工作。
解决方法
没有having
的情况下请勿使用group by
。尽管MySQL支持该功能,但这不是有效的标准SQL,并且您得到的行为很可能违反直觉。
第一个查询应该只是一个where
子句:
select wage from abc where wage > 1
第一个查询毫无意义:您在wage
子句中同时拥有汇总的having
和未汇总的select wage
from abc
order by wage desc limit 1
。如果您想要具有最高工资的行,则可以按以下限制进行订购:
select *
from abc a
where wage = (select max(a1.wage) from abc)
或者,如果您想允许联系,请使用相关的子查询:
var deleteTag = '<custom-tag>.*?<\/custom-tag>';
string= string.replace(new RegExp(deleteTag,'g'),'');