Oracle SQL:如何查找和删除重复项
我只有只读访问Oracle (只能使用SELECT命令)。
逻辑:两个用户'A‘和'B’具有相同的公司名称和名称
要提取的列:
ID of A
ID of B
Company Name of A
Company Name of B
First Name of A
First Name of B我正在使用的查询:
select a.id, b.id, a.name, b.name, a.company, b.company from
(select id, company, name where country = 'USA') a,
(select id, company, name where country = 'UK') b
where a.id <> b.id
and lower(a.company) = lower(b.company)
and a.username = b.username在这里,我得到了每一行两次(请参阅下表):
A_ID ..........B_ID ..........A_NAME ..........B_NAME ..........A_COMPANY ..........B_COMPANY
3592382……1977967……彼得.彼得.A.B.C.A.B.C.
1977967……3592382……彼得.彼得.A.B.C.A.B.C.
5949363……5941818……约瑟夫.约瑟夫.X.Y.Z.X.Y.Z.
5941818……5949363……约瑟夫.约瑟夫.X.Y.Z.X.Y.Z.
发布于 2015-08-31 15:48:55
您对查询有几个问题。
1)如果您执行select val1,val2 from a, b,您将得到一个cross-join结果。
2)别名表没有from子句。
你说你只能访问select。因此,您只能对非重复值进行select。
select distinct a.id, b.id, a.name, b.name, a.company, b.company
from
(select id, company, name from tablename where country = 'USA') a
join
(select id, company, name from tablename where country = 'UK') b
on a.id = b.id and lower(a.company) = lower(b.company) and a.username = b.username发布于 2015-08-31 16:01:34
您在子查询中忘记了表名。另外,当两个值都是相同的(这是条件)时,我建议不要获得a.col和b.col,因为它降低了性能,并且没有添加任何有价值的数据
SELECT a.id, b.id, a.name, a.company
FROM tablename a
JOIN tablename b
ON (a.name == b.name AND a.company == b.company AND a.username == b.username)
WHERE a.country = 'USA'
AND b.country = 'UK'https://stackoverflow.com/questions/32314959
复制相似问题