0 sql oracle worksheet ora-00913
我正在尝试比较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
Run Code Online (Sandbox Code Playgroud)
我正在寻找的回报是
2 ccc 22 ddd
2 ccc 22 eee
Run Code Online (Sandbox Code Playgroud)
我正在尝试使用以下内容
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
Run Code Online (Sandbox Code Playgroud)
我收到以下错误
ORA-00913: demasiados valores
00913. 00000 - "too many values"
*Cause:
*Action:
Error at Line: 6 Column: 1
Run Code Online (Sandbox Code Playgroud)
这指的是第1行 (
任何帮助将非常感激.
您获得的具体错误是由于以下原因:
where id in ( select id, name, age from
Run Code Online (Sandbox Code Playgroud)
您不能使用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
Run Code Online (Sandbox Code Playgroud)