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等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)