在用UNION命令完成数据库表的集合并 *** 作时,如果我们要显示所有的查询结果,该如何做(3分)

在用UNION命令完成数据库表的集合并 *** 作时,如果我们要显示所有的查询结果,该如何做(3分),第1张

UNION *** 作符用于合并两个或多个 SELECT 语句的结果集。

请注意UNION和UNION ALL的区别,UNION *** 作符默认选取不同的值。如果允许重复的值,请使用 UNION ALL。

A表字段stuid,stuname

B表字段bid,stuid,score,coursename,status

CREATE TABLE A#(

stuid INT,

stuname VARCHAR(10)

);

CREATE TABLE B# (

bid INT,

stuid INT,

score INT,

coursename VARCHAR(10),

status INT,

);

INSERT INTO A#

SELECT 1, '张三' UNION ALL

SELECT 2, '李四' UNION ALL

SELECT 3, '王五' UNION ALL

SELECT 4, '赵六'

;

INSERT INTO B#

SELECT 1, 1, 100, '语文', 0 UNION ALL

SELECT 2, 1, 99, '数学', 1 UNION ALL

SELECT 3, 2, 88, '语文', 0 UNION ALL

SELECT 4, 2, 88, '数学', 1 UNION ALL

SELECT 5, 3, 77, '语文', 0 UNION ALL

SELECT 6, 3, 77, '数学', 0 UNION ALL

SELECT 5, 4, 66, '语文', 1 UNION ALL

SELECT 6, 4, 66, '数学', 1

;

SELECT

A#stuid,

B#score,

B#coursename,

B#status

FROM

A# JOIN B#

ON (A#stuid = B#stuid AND B#status = 1)

WHERE

NOT EXISTS (

SELECT

1

FROM

B# sub

WHERE

A#stuid = substuid

AND substatus = 1

AND subscore > B#score

)

stuid score coursename status

----------- ----------- ---------- -----------

1 99 数学 1

2 88 数学 1

4 66 语文 1

4 66 数学 1

(4 行受影响)

注:

stuid = 3的,2门课程的 status 都为0,因此无数据显示。

stuid = 4 的,2门课程都等于 max(score), 因此显示出2行数据。

可以的。

UNION *** 作符用于合并两个或多个 SELECT 语句的结果集。需要注意的是

1、UNION 内部的 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每条 SELECT 语句中的列的顺序必须相同。

2、这个命令连接的结果集中有重复的值不会被显示。想忽略重复值,可以使用 union all。

以上就是关于在用UNION命令完成数据库表的集合并 *** 作时,如果我们要显示所有的查询结果,该如何做(3分)全部的内容,包括:在用UNION命令完成数据库表的集合并 *** 作时,如果我们要显示所有的查询结果,该如何做(3分)、SQL联合查询语句、sql语句中能否使用多个union等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10183602.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-06
下一篇 2023-05-06

发表评论

登录后才能评论

评论列表(0条)

保存