mysql - 查找具有唯一姓氏的所有用户
问题描述
我有一张桌子users
。
mysql> SELECT * FROM `actors`;
+-----------+------------+------------+------------+
| actors_id | first_name | last_name | dob |
+-----------+------------+------------+------------+
| 1 | name1 | lastname1 | 1989-06-01 |
| 2 | name2 | lastname2 | 1989-05-02 |
| 3 | name3 | lastname2 | 1989-06-03 |
+-----------+------------+------------+------------+
我写了一个 sql 查询,显示所有具有唯一姓氏的用户
SELECT MAX(a.first_name), a.last_name
FROM actors AS a
GROUP BY a.last_name
HAVING COUNT(DISTINCT a.first_name) = 1;
告诉我为什么查询会删除折叠的用户 name2 和 name3?
HAVING COUNT(DISTINCT u.first_name) = 1;
这个怎么运作?帮助理解它是如何工作的
解决方案
当您运行此查询时
SELECT MAX(a.first_name), a.last_name,COUNT(DISTINCT a.first_name)
FROM actors AS a
GROUP BY a.last_name
result:
+-------------------------+------------+----------------------------------+
| MAX(a.first_name) | last_name | COUNT(DISTINCT a.first_name) |
+-------------------------+------------+----------------------------------+
| name1 | lastname1 | 1 |
| name2 | lastname2 | 2 |
+-------------------------+------------+----------------------------------+
Now
HAVING COUNT(DISTINCT u.first_name) = 1;
then:
SELECT MAX(a.first_name), a.last_name,COUNT(DISTINCT a.first_name)
FROM actors AS a
GROUP BY a.last_name
HAVING COUNT(DISTINCT a.first_name) = 1;
+-------------------------+------------+---------------------------------+
| MAX(a.first_name) | last_name | COUNT(DISTINCT a.first_name) |
+-------------------------+------------+----------------------------------+
| name1 | lastname1 | 1 |
+-------------------------+------------+----------------------------------+
推荐阅读
- php - Xdebug 是否依赖于 PHP 版本(VSCode IDE)?
- php - 如何在 laravel 刀片中使用会话数据作为变量?
- hugo - 如何让 Hugo 渲染块引用?
- php - 在 Laravel 6 中显示数据库中的图像时检索路径错误
- python - 图表是空的..Python 2.7
- c# - 在 c# windows 应用程序中关闭子窗体时如何刷新另一个窗体?
- python - macosX下的python:验证:映射文件没有cdhash,完全无符号?代码必须至少是临时签名的
- javascript - 计算并定义具有特定 ID 前缀的输入数量
- spring - 如何使用@scheduled 知道所有线程在spring boot @async 中完成
- android - 防止前台服务进入睡眠模式