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

洛阳网站建设公司小说推广平台有哪些

洛阳网站建设公司,小说推广平台有哪些,做物流网站有哪些功能,一个空间做两个网站一、前言 MySQL 子查询是指嵌套在其他 SQL 语句(如 SELECT、WHERE、FROM 等)内部的查询。用于辅助主查询完成复杂的数据筛选或计算。 二、子查询分类 标量子查询 描述:返回 单行单列(一个值),常用于比较运…

一、前言

  • MySQL 子查询是指嵌套在其他 SQL 语句(如 SELECT、WHERE、FROM 等)内部的查询。
  • 用于辅助主查询完成复杂的数据筛选或计算。

二、子查询分类

  • 标量子查询
    • 描述:返回 单行单列(一个值),常用于比较运算(如 =、>、< 等)。
    • 示例:SELECT name FROM employee WHERE salary (SELECT AVG(salary) FROM employee);
  • 列子查询
    • 描述:返回 多行单列,需搭配 IN、ANY、ALL 等操作符。
    • 示例: SELECT name FROM department WHERE id IN (SELECT dept_id FROM employee);
  • 行子查询
    • 描述:返回 单行多列,需用行表达式(如 (col1, col2))匹配。
    • 示例: SELECT FROM employee WHERE (age, salary) = (SELECT MAX(age), MAX(salary) FROM employee);
  • 表子查询
    • 描述:返回 多行多列,通常作为临时表(派生表)在 FROM 子句中使用。
    • 示例: SELECT deptname, empcount FROM (SELECT deptid, COUNT(*) AS empcount FROM employee GROUP BY dept_id) AS tmp;
  • 相关子查询
    • 描述:子查询依赖外部查询的字段值,逐行执行(效率较低)。
    • 示例: SELECT name FROM employee e1 WHERE salary (SELECT AVG(salary) FROM employee e2 WHERE e1.deptid = e2.deptid);

三、常用操作符

  • IN / NOT IN:用于判断值是否在子查询的结果集中
-- 查询有订单的客户
SELECT customer_name 
FROM customers 
WHERE id IN (SELECT customer_id FROM orders);
  • ANY / SOME:比较值与子查询结果中的任意一个是否满足条件
-查询薪资大于任意一个部门平均薪资的员工 
SELECT name  FROM employee  WHERE salary ANY (SELECT AVG(salary) FROM employee GROUP BY dept_id);
  • ALL:比较值需满足与子查询结果中的所有值
-查询薪资高于所有部门平均薪资的员工 
SELECT name  FROM employee  WHERE salary ALL (SELECT AVG(salary) FROM employee GROUP BY dept_id);
  • XISTS / NOT EXISTS:检查子查询是否返回至少一行结果
-- 查询有下属部门的上级部门
SELECT dept_name 
FROM departments d 
WHERE EXISTS (SELECT 1 FROM departments WHERE parent_id = d.id);

四、典型应用场景

  • 1、在 WHERE 子句中筛选数据
-- 查找薪资高于平均值的员工
SELECT name, salary 
FROM employee 
WHERE salary > (SELECT AVG(salary) FROM employee);
  • 2、在 FROM 子句中作为临时表
-- 统计每个部门的平均薪资,并筛选高于公司平均薪资的部门
SELECT dept_id, avg_salary
FROM (SELECT dept_id, AVG(salary) AS avg_salary FROM employee GROUP BY dept_id) AS dept_avg
WHERE avg_salary > (SELECT AVG(salary) FROM employee);
  • 3、在 FROM 子句中作为临时表
-- 显示员工姓名及其部门平均薪资
SELECT name, salary, (SELECT AVG(salary) FROM employee e2 WHERE e1.dept_id = e2.dept_id) AS dept_avg
FROM employee e1;

五、注意事项

  • 性能优化:相关子查询需逐行执行,可能影响性能,可尝试改写为 JOIN 或临时表。
  • 处理 NULL 值:使用 IN 或 NOT IN 时,若子查询结果包含 NULL,可能导致意外结果(如 NOT IN (NULL, …) 永远返回 FALSE)。
  • 多层嵌套:MySQL 支持多层子查询嵌套,但需保持代码可读性。
  • 别名使用:派生表必须指定别名(如 FROM (SELECT …) AS tmp)。

六、示例:复杂查询

-- 查找每个部门薪资最高的员工
SELECT dept_id, name, salary
FROM employee e1
WHERE salary = (SELECT MAX(salary) FROM employee e2 WHERE e1.dept_id = e2.dept_id
);
  • 通过灵活运用子查询,可以解决大部分复杂的数据关联和筛选需求。
  • 实际开发中需结合执行计划分析,确保查询效率。
http://www.dtcms.com/wzjs/215499.html

相关文章:

  • 做网站ps切图品牌的宣传及推广
  • 网站被插入广告 代码企业网站营销的优缺点及案例
  • 微商刚起步怎么找客源奶糖 seo 博客
  • 婚纱网站建设 最开始广告公司推广软文
  • 网络营销推广方法论文 结合案例天津seo招聘
  • 做个自己的网站需要多少钱站长是什么级别
  • 有免费网站服务器吗知乎关键词搜索排名
  • 塘厦镇做网站百度的营销推广模式
  • 山西做网站公司指数基金投资指南
  • 如何把做的网站放到百度上郴州网络推广公司排名
  • 苏州网站建设免费长春网站搭建
  • 公司网站建设进度表关键词优化公司电话
  • 可以定制衣服的软件站长seo
  • 青岛定制网站建设推广优化是什么意思?
  • 虚拟主机网站建设过程网页设计主题参考
  • 网站图片属性是什么好的seo平台
  • 做网站一定要代码吗seo新人怎么发外链
  • 湖南城乡住房建设厅网站大学生网络营销策划书
  • 怎么免费注册网站百度站长seo
  • 那种网站20212023年最新新闻简短摘抄
  • 宁波网站推广规划关键词规划师
  • 临沂网站建设兼职青岛百度网站排名
  • 上海疫情防控措施青岛seo代理计费
  • 做电影网站的图片素材重庆seo排名扣费
  • 营销型网站建设发外链平台
  • 南宁做网站优化网站流量分析的指标有哪些
  • 沈阳高端做网站建设磁力蜘蛛
  • 韩国男女做游戏视频网站广东省新闻
  • 为什么做网站会被批捕怎么做网址
  • 0基础学做网站教程一键生成网站