例如,我有两个表,源中的学生和目标中的 student1。student 和 student1 具有列 sname,m,p,c ( sname 作为学生姓名,m,p,c 作为主题标记。我需要找出列名和存在 '&*' 的值。
学生 和学生1
输出应该像
您可以对所有列进行完全外部联接,并在我们检查具有空值的列的位置添加 where 子句。
例如:
select * from A FULL OUTER JOIN B on A.col1 = B.col1 和 A.col2 = B.col2... 其中 A.col1 为 NULL 或 B.col1 为 NULL 或 A.col2 为 NULL 或 B.col2 为无效的 ....
您可以尝试使用NATURAL JOIN
连接两个具有相同列名的表。具有自然连接的查询将为您提供所有匹配的记录。然后,您可以从student1
表中的查询返回记录中减去这些结果,并且您将获得自然联接遗漏的记录(即具有垃圾值的记录):
CREATE TABLE student (
sname VARCHAR2(20),
m VARCHAR2(20),
p VARCHAR2(20),
c VARCHAR2(20)
);
CREATE TABLE student1 (
sname VARCHAR2(20),
m VARCHAR2(20),
p VARCHAR2(20),
c VARCHAR2(20)
);
INSERT INTO student VALUES ('rama', '50', '60', '70');
INSERT INTO student VALUES ('laxman', '70', '50', '60');
INSERT INTO student VALUES ('sita', '60', '70', '50');
INSERT INTO student VALUES ('kalpu', '40', '80', '70');
INSERT INTO student VALUES ('some student', '*', '80', '70');
INSERT INTO student1 VALUES ('rama', '50', '60', '70');
INSERT INTO student1 VALUES ('laxman', '70', '&*', '60');
INSERT INTO student1 VALUES ('sita', '60', '70', '50');
INSERT INTO student1 VALUES ('kalpu', '40', '80', '70');
INSERT INTO student1 VALUES ('some student', '40', '80', '70');
COMMIT;
SELECT
*
FROM student1
MINUS
SELECT
*
FROM student s
NATURAL JOIN student1 s1
;
输出:
SNAME MPC -------------------- -------- ---------- ---------- -------- 拉克斯曼 70 &* 60