1

例如,我有两个表,源中的学生和目标中的 student1。student 和 student1 具有列 sname,m,p,c ( sname 作为学生姓名,m,p,c 作为主题标记。我需要找出列名和存在 '&*' 的值。

学生在此处输入图像描述 和学生1在此处输入图像描述

输出应该像在此处输入图像描述

4

2 回答 2

0

您可以对所有列进行完全外部联接,并在我们检查具有空值的列的位置添加 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 为无效的 ....

于 2013-10-30T12:44:31.400 回答
0

您可以尝试使用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                   
于 2013-10-30T08:27:55.893 回答