看表:
mysql> select * from x;
+----+---+---+
| id | a | b |
+----+---+---+
| 1 | 1 | 2 |
| 2 | 5 | 3 |
| 3 | 1 | 4 |
| 4 | 1 | 5 |
| 5 | 5 | 1 |
| 6 | 6 | 1 |
+----+---+---+
用group by:
mysql> select a, count(*) from x group by a;
+---+----------+
| a | count(*) |
+---+----------+
| 1 | 3 |
| 5 | 2 |
| 6 | 1 |
+---+----------+
3 rows in set (0.00 sec)
然后再筛选:
mysql> select a, count(*) as c from x group by a where c = 2;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'where c = 2' at line 1
mysql>
应该用having:
mysql> select a, count(*) as c from x group by a having c = 2;
+---+---+
| a | c |
+---+---+
| 5 | 2 |
+---+---+
1 row in set (0.00 sec)
mysql>
或者:
mysql> select * from (select a, count(*) as c from x group by a ) where c = 2;
ERROR 1248 (42000): Every derived table must have its own alias
mysql>
改为:
mysql> select * from (select a, count(*) as c from x group by a ) as b where c = 2;
+---+---+
| a | c |
+---+---+
| 5 | 2 |
+---+---+
1 row in set (0.00 sec)
或者:
mysql> select * from (select a, count(*) as c from x group by a ) as b where b.c = 2;
+---+---+
| a | c |
+---+---+
| 5 | 2 |
+---+---+
1 row in set (0.00 sec)
酱紫。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。