当前位置: 首页 > news >正文

SQL常见误区

查询的顺序

书写顺序

SELECT
字段列表
FROM
表名列表
WHERE
条件列表
GROUP BY
分组字段列表
HAVING
分组后条件列表
ORDER BY
排序字段列表。。他们的加载顺序

逻辑处理实际顺序

在这里插入图片描述

常见错误

在 WHERE 中使用 SELECT 的别名

sql
– 错误示例(WHERE 中不能使用别名)
SELECT Name AS EmployeeName
FROM Employees
WHERE EmployeeName LIKE ‘A%’; – 报错!
在 GROUP BY 中使用聚合函数

sql
– 错误示例(GROUP BY 不能包含聚合函数)
SELECT DeptID, AVG(Salary)
FROM Employees
GROUP BY AVG(Salary); – 报错!
混淆 HAVING 和 WHERE

sql
– HAVING 用于过滤分组,WHERE 用于过滤行
SELECT DeptID, COUNT()
FROM Employees
WHERE Salary > 5000 – 过滤行
GROUP BY DeptID
HAVING COUNT(
) > 10; – 过滤分组

IS NULL 和 IS NOT NULL

为什么不能用 = NULL 或 <> NULL?

NULL 的特殊性:
NULL 表示“未知”或“无值”,它不是具体的数据值,无法通过常规比较符(=、<>、<、>)判断。

三值逻辑:
SQL 中逻辑运算的结果可能是 TRUE、FALSE 或 UNKNOWN。当比较 NULL 时,结果通常是 UNKNOWN,而 WHERE 子句只返回 TRUE 的记录。

相关文章:

  • [低代码 + AI] 明道云与 Dify 的三种融合实践方式详解
  • 大模型学习专栏-导航页
  • Python字符串全解析:从基础操作到高级应用的技术指南
  • LeetCode:链表的中间结点
  • Python核心技巧 类与实例:面向对象编程的基石
  • 41.寻找缺失的第一个正数:原地哈希算法详解
  • 开元类双端互动组件部署实战全流程教程(第2部分:控制端协议拆解与机器人逻辑调试)
  • 精益数据分析(41/126):深入解读移动应用商业模式的关键指标与策略
  • Leetcode刷题记录32——搜索二维矩阵 II
  • SecureCRT 使用指南:安装、设置与高效操作
  • 判断题材持续性
  • 进程的程序替换——exec系列函数的使用
  • 深入浅出数据库规范化的三大范式
  • Redis能保证数据不丢失吗之AOF
  • Red Hat6.4环境下搭建NFS服务器
  • 30天通过软考高项-第十一天
  • 算法中的数学:质数(素数)
  • chili3d笔记11 连接yolo python http.server 跨域请求 flask
  • CRS 16 slot 设备硬件架构
  • [学成在线]23-面试题总结
  • 经济日报头版刊文:为什么贸易战没有出路
  • 五一小长假上海“人从众”,全要素旅游交易总额超200亿元
  • 贵州黔西市游船倾覆事故发生后,多家保险公司紧急响应
  • 岳伟华任北京大学第六医院院长,陆林院士卸任
  • 晋城一男子实名举报村支书打伤其67岁父亲,镇政府:案件正在侦办中
  • “五一”假期第三天,预计全社会跨区域人员流动量超2.8亿人次