mysql - 使用嵌套查询是否会通过简单查询向 sql 查询添加语义
问题描述
create table students(id int,
name varchar(20),
dept varchar(10),
salary int default 10000
);
Insert into students values(1,'Ram','HR',10000);
Insert into students values(2,'Amrit','Mrkt',20000);
Insert into students values(3,'Ravi','HR',30000);
Insert into students values(4,'Raju','finance',40000);
我的导师告诉我的查询:
select name from employee where dept in(select dept from emp group by dept having count(*)<2);
他告诉我们应该只将该属性与已在 group by 中使用的 select 语句一起使用,其他属性不能使用。
但以下查询也有效:
select name from employee group by dept having count(*)<2;
我的查询是对还是错?如果它是正确的,使用它作为嵌套查询比简单查询有什么优势?
解决方案
如果您只有一个匹配的行,那么您可以使用:
select max(name)
from employee
group by dept
having count(*) = 1;
该having
子句保证一个匹配。max()
返回一行中的值。
这很好,但不是很正统——它不能很好地概括。您的导师建议的形式更具普遍性。它很容易适应在有 2 名或 7 名员工的部门中寻找员工。
推荐阅读
- rpa - tagui中循环的意外结果
- javascript - 单击外部时,我无法隐藏导航下拉菜单
- powerbi - Power BI On-Premises 数据网关不刷新 SQL Server 分析服务仪表板
- clojure - :on-click 呈现为文本
- asp.net-mvc - 如何将用户列表发布到 ASP.Core POST 操作?
- javascript - array.shift() 在 axios 响应中不起作用?
- android - 拨出电话时Android意图操作错误
- python - 如何将数据帧附加到 iterrows 中的数据帧
- mysql - 如何在查询中同时添加 Alter 和 Select?
- vue.js - 如何在 nativescript vue 中管理用户的登录状态?