0

我正在尝试比较 2 列,目标是返回不匹配的行。例如,我在第 1 列和第 2 列中有以下内容

1                     2
id name age job       id  name  age  job
1   aaa  11 bbb        1   aaa   11   bbb
2   ccc  22 ddd        2   ccc   22   eee

我正在寻找的回报是

2  ccc 22  ddd
2  ccc 22  eee 

我正在尝试使用以下

select id, name, age from 1 where id in
(
select id, name, age from 1
minus
select id, name, age from 2
)
union all
select id, name, age from 2 where id in
(
select id, name, age from 1
minus
select id, name, age from 2
)
order by id

我收到以下错误

ORA-00913: demasiados valores
00913. 00000 -  "too many values"
*Cause:    
*Action:
Error at Line: 6 Column: 1

那是指与第 1 行(

任何帮助将不胜感激。

4

1 回答 1

5

您收到的具体错误是由于以下原因:

where id in ( select id, name, age from

您不能使用 in 子句将 ID 的单个值与其他 3 个值进行比较。

-- get values in 1 not in 2
SELECT 1.id, 1.name, 1.age 
FROM 1
LEFT JOIN 2 on 1.id = 2.id and 1.name = 2.name and 1.age = 2.age
WHERE 2.id is null
UNION
-- get values in 2 not in 1
SELECT 2.id, 2.name, 2.age 
FROM 2
LEFT JOIN 1 on 2.id = 1.id and 2.name = 1.name and 2.age = 1.age
WHERE 1.id is null
于 2011-08-10T10:40:57.897 回答