当前位置: 首页 > 面试题库 >

SQL-在哪里

竺勇
2023-03-14
问题内容

我有以下两个表:

1. Lecturers (LectID, Fname, Lname, degree).
2. Lecturers_Specialization (LectID, Expertise).

我想找到最专业的讲师。当我尝试此操作时,它不起作用:

SELECT
  L.LectID, 
  Fname, 
  Lname 
FROM Lecturers L, 
     Lecturers_Specialization S
WHERE L.LectID = S.LectID
AND COUNT(S.Expertise) >= ALL (SELECT
  COUNT(Expertise)
FROM Lecturers_Specialization
GROUP BY LectID);

但是当我尝试这样做时,它会起作用:

SELECT
  L.LectID,
  Fname,
  Lname 
FROM Lecturers L,
     Lecturers_Specialization S
WHERE L.LectID = S.LectID
GROUP BY L.LectID,
         Fname,
         Lname 
HAVING COUNT(S.Expertise) >= ALL (SELECT
  COUNT(Expertise)
FROM Lecturers_Specialization
GROUP BY LectID);

是什么原因?谢谢。


问题答案:

WHERE子句在 单行 上引入条件; HAVING子句引入了 聚合 条件,即选择结果,其中已从 多个
行生成单个结果,例如计数,平均值,最小值,最大值或总和。您的查询需要第二种条件(即聚合条件),因此HAVING可以正常工作。

根据经验,请WHERE在之前GROUP BYHAVING之后使用GROUP BY。这是一个比较原始的规则,但在90%以上的情况下很有用。

执行此操作时,您可能希望使用ANSI版本的联接来重写查询:

SELECT  L.LectID, Fname, Lname
FROM Lecturers L
JOIN Lecturers_Specialization S ON L.LectID=S.LectID
GROUP BY L.LectID, Fname, Lname
HAVING COUNT(S.Expertise)>=ALL
(SELECT COUNT(Expertise) FROM Lecturers_Specialization GROUP BY LectID)

这将消除WHERE用作 θ连接条件的条件



 类似资料:
  • 我想看一下 SQL 标准中的内容 然后我去谷歌搜索了一下 chatGPT 给我的关键字 但是出来的结果,貌似都是和某一款 DB 具体实现相关,而不是一个通用的 sql 标准

  • 我无法在tarantool社区1.9中执行任何SQL语句。 很多地方都说版本1.8支持: https://medium.com/@demitryophoto/mail-ru-组-tarantol-dbms-now-支持sql-6e2636a0abef http://ocelot.ca/blog/blog/2017/12/14/the-tarantool-sql-alpha/ 发生了什么事?它从1.

  • 问题内容: 我遇到了一群黑客。他们几次入侵了我客户的网站,我的客户更加生气:(我的客户丢失了他的数据库(有数百条记录),不得不输入所有:( 现在,我将进行更多介绍。 固定文件权限 更改了ftp和主机登录信息 清除所有远程mysql访问 现在正在处理SQL注入问题。我在管理面板登录参数中添加了mysql_real_escape_string。所以我还应该在哪里使用mysql_real_escape_

  • 问题内容: 以下是在SQL中达到其结果的最有效的方法: 可以更好地使用联接并达到相同的结果吗? 问题答案: 您可能更喜欢使用a而不是的原因之一是,如果子句中的Values包含any,您将永远不会获得任何结果。如果确实要使用,请记住要始终考虑子查询是否可能带回NULL值! RE:评论中的问题 ‘x’NOT IN(NULL,’a’,’b’) ≧ ‘x’<> NULL和’x’<>’a’和’x’<>’b’

  • 问题内容: 兼容JDBC的应用程序应在哪里存储其SQL语句,为什么? 到目前为止,我设法确定了这些选项: 硬编码在业务对象中 嵌入在SQLJ子句中 封装在单独的类中,例如 数据访问对象 驱动元数据(将对象模式与数据模式分离-在元数据中描述它们之间的映射) 外部文件(例如属性或资源文件) 存储过程 各自的“优点”和“缺点”是什么? 应该将SQL代码视为“代码”还是“元数据”? 存储过程应该仅用于性能

  • 问题内容: 有官方的SQL标准吗?即我想了解SQL语言支持哪种类型的表达式以及服务器如何评估该表达式?哪些文档用于实现基于SQL的数据库? 问题答案: 有来自ISO / ANSI委员会的官方SQL标准。 一些信息可以在这里找到:http : //en.wikipedia.org/wiki/Sql 但是,该规范本身不是免费提供的。如果您进行搜索,则可能会在Internet上找到一些较早规格的草稿。