【问题标题】:Does using nested queries adds semantics to the sql query over simple query使用嵌套查询是否会通过简单查询向 sql 查询添加语义
【发布时间】:2020-10-13 17:41:46
【问题描述】:
   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;

我的查询是对还是错?如果正确,将其用作嵌套查询比简单查询有什么优势?

【问题讨论】:

    标签: mysql sql select insert having


    【解决方案1】:

    如果你只有一个匹配的行,那么你可以使用:

    select max(name)
    from employee
    group by dept
    having count(*) = 1;
    

    having 子句保证一个匹配。 max() 返回一行中的值。

    这很好,但不是很正统——它不能很好地概括。你的导师建议的形式更普遍。它很容易适应在有 2 名或 7 名员工的部门中寻找员工。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-09-19
      • 1970-01-01
      • 1970-01-01
      • 2023-01-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多