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

东莞 营销网站网站跟网页有什么区别

东莞 营销网站,网站跟网页有什么区别,怎么做网站滑动图片部分,义乌市企推网络科技有限公司postgresql-子查询 简介派生表IN 操作符ALL 操作符ANY 操作符关联子查询横向子查询EXISTS 操作符 简介 子查询(Subquery)是指嵌套在其他 SELECT、INSERT、UPDATE 以及 DELETE 语句中的 查询语句。 子查询的作用与多表连接查询有点类似,也是为…

postgresql-子查询

  • 简介
  • 派生表
  • IN 操作符
  • ALL 操作符
  • ANY 操作符
  • 关联子查询
  • 横向子查询
  • EXISTS 操作符

简介

子查询(Subquery)是指嵌套在其他 SELECT、INSERT、UPDATE 以及 DELETE 语句中的
查询语句。
子查询的作用与多表连接查询有点类似,也是为了从多个关联的表中返回或者过滤数据。

例如,我们想要知道哪些员工的月薪大于平均月薪,可以通过子查询实现:

select e.first_name, e.last_name, e.salaryfrom employees e
where salary > (select avg(salary) from employees);

在这里插入图片描述
其中,WHERE 子句中使用了一个子查询,用于计算平均月薪。PostgreSQL 在执行以上语句
时,先执行子查询返回平均月薪;然后将该值传递给外查询使用。
子查询必须位于括号中,也称为内查询,包含子查询的查询语句被称为外查询。除了 WHERE
子句之外,其他子句中也可以使用子查询,例如 SELECT 列表、FROM 子句等。

派生表

FROM 子句中的子查询被称为派生表(Derived table),语法如下:

SELECT column1, column2, ...FROM (subquery) AS table_alias;

其中子查询相当于创建了一个临时表 table_alias。以下语句用于获取每个部门的总月薪:

select d.department_name,ds.sum_salaryfrom departments djoin (select department_id,sum(salary) as sum_salaryfrom employeesgroup by department_id) dson (d.department_id = ds.department_id);

在这里插入图片描述
其中,子查询返回了部门编号和部门月薪合计;然后再和 departments 表进行连接查询。

IN 操作符

如果 WHERE 子查询返回多个记录,可以使用 IN 操作符进行条件过滤:

SELECT d.department_id,d.department_nameFROM departments d
WHERE d.department_id in (SELECT department_id FROM employees WHERE
hire_date >= date '2008-01-01');

以上查询返回了存在 2008 年 01 月 01 日以后入职员工的部门。如果想要返回包含该日期之
前入职的员工的部门,可以使用 NOT IN 操作符。
除了 IN 之外,还有一些其他进行类似过滤的操作符。

ALL 操作符

ALL 操作符与比较运算符一起使用,可以将一个值与子查询返回的列表进行比较:

SELECT first_name, last_name, salaryFROM employees
WHERE salary > all (SELECT salary FROM employees WHERE department_id = 80);

以上语句返回了月薪比销售部门(department_id = 80)所有员工都高的员工。
其他比较运算符也可以与 ALL 进行组合,例如 salary < ALL 表示月薪比销售部门所有员工
都低的员工。

ANY 操作符

ANY 操作符和 ALL 操作符使用方法类似,只是效果不同:

SELECT first_name, last_name, salaryFROM employees
WHERE salary > any (SELECT salary FROM employees WHERE department_id = 80);

在这里插入图片描述
以上语句返回了月薪比销售部门(department_id = 80)任何员工高的员工。
ANY 也可以和其他比较运算符一起使用,例如= ANY 实际上和 IN 的作用相同。
另外,SOME 和 ANY 是同义词。

关联子查询

有一类子查询,它们会引用外部查询中的列,因而与外部查询产生关联,被称为关联子查询。

返回月薪大于所在部门平均月薪的员工:

select first_name, last_name, salary
from employees o
where o.salary > (select avg(salary) from employees i where i.department_id
= o.department_id);

在这里插入图片描述
可以看到,子查询中使用了外查询的字段(o.department_id)。对于外部查询中的每个
员工,运行子查询返回他/她所在部门的平均月薪,然后传递给外部查询进行判断。

关联子查询对于外查询中的每一行都会运行一次(数据库可能会对此进行优化),而非
关联子查询在整个查询运行时只会执行一次

以下语句在 SELECT 列表中使用关联子查询,返回每个部门的总月薪,和上文示例
相同:

SELECT d.department_name,(SELECT SUM(salary)FROM employees eWHERE e.department_id = d.department_id) AS sum_salaryFROM departments dORDER BY d.department_name;

横向子查询

子查询只能引用外查询中的字段,而不能使用同一层级中其他表中的字段

SELECT d.department_name,t.avg_salaryFROM departments dJOIN (SELECT avg(e.salary) AS avg_salaryFROM employees eWHERE e.department_id = d.department_id) t;
SQL Error [42601]: ERROR: syntax error at end of inputPosition: 209

以上语句在 JOIN 中引用了左侧 departments 表中的字段,产生了语法错误。为此,我们需
要使用横向子查询(LATERAL subquery)。通过增加 LATERAL 关键字,子查询可以引用左侧
表中的列:

select d.department_name,t.sum_salaryfrom departments d
cross join lateral (select sum(e.salary) as sum_salaryfrom employees ewhere e.department_id = d.department_id) t;

以上语句同样返回了每个部门的名称和总月薪。

EXISTS 操作符

EXISTS 操作符用于检查子查询结果的存在性。如果子查询返回任何结果,EXISTS 返回 True;
否则,返回 False。

返回了存在 2008 年 01 月 01 日以后入职员工的部门

select 
d.department_id ,
d.department_name 
from cps.public.departments d 
where exists (
select 1 from cps.public.employees e where e.hire_date >= date('2008-01-01')
);

在这里插入图片描述
NOT EXISTS 操作符执行相反的操作,即子查询不返回任何结果,NOT EXISTS 返回 True;
否则,返回 False。

[NOT] IN 用于检查某个值是否属于(=)子查询的结果列表,[NOT] EXISTS 只检查子查询
结果的存在性。如果子查询的结果中存在 NULL,NOT EXISTS 结果为 True;但是,NOT IN 结
果为 False,因为 NOT (X = NULL) 的结果为 NULL。例如:

在这里插入图片描述
以上语句查找没有任何员工的部门,结果返回了 16 条记录。如果使用 NOT IN 操作符:

select d.department_id,d.department_namefrom departments d
where d.department_id not in (select department_id from employees);

在这里插入图片描述
查询没有返回任何结果,因为有一个员工不属于任何部门,导致子查询的结果中包含 NULL:

http://www.yayakq.cn/news/348423/

相关文章:

  • 海口专业做网站wix做的网站能扒下来
  • 厦门网站制作公司找哪家wordpress主题屏蔽更新
  • 对单位网站的要求建设机械网站方案设计
  • 网站备案 优帮云网站建设的网站
  • 个人网站可以做产品宣传吗群晖 wordpress 阿里云
  • 可以用服务器做网站erp系统有什么用
  • 建设网站公司电话销售话术微帮推广平台有哪些
  • 网页设计实验报告问题讨论广告优化正规公司
  • 西安制作网站九江网站建设公司
  • diy建站系统北京网页设计如何创意
  • 英语网站online东莞广告公司排名
  • 宝应县天宇建设网站设计师做兼职的网站
  • 中牟做网站网站更新了
  • 上海网站建设 虹口灯哥解析 wordpress
  • xunsearch做搜索网站网站开发的历史
  • 做网站引流的最佳方法做一个app需要什么流程
  • 苏州网站建设制作设计建筑企业
  • wordpress 子菜单顺序wordpress seo yoast
  • 如何建设一个不备案的网站企业电器网站建设方案
  • 什么是网站策划书html5旅游网页设计
  • 东营网站建设报价网页开发技术有哪些
  • 关于做好学院网站建设的要求做汽车英文网站
  • 做餐饮类网站用哪个程序公司做的网站访问很慢
  • 品牌网站建设哪家好网站被墙怎么做跳转
  • 阜阳网站设计网站设计建设网站
  • 我的家乡湛江网站设计开滦建设集团网站
  • 建网站注意什么next wordpress
  • 网站建设如何描述建筑网络图片
  • 吉安手机网站建设网站空间域名维护协议
  • 河间市做网站价格适合一人开店的加盟店