繁体   English   中英

将一列非唯一值与另一列非唯一值进行比较

[英]Comparing 1 column of non-unique values to another column of non-unique values

不确定如何正确询问它,因此我将尝试对其进行可视化。 我有2列,可以说一个是名字,两个名字重复(一对Johns,一些Lukes,等等)。 另一列是很多语言,但只有少数几种(法语,西班牙语,英语等)。 基本上,每个人都可以使用多种语言。

我试图找出是否给出名字,我可以确定其他人与原始人所使用的所有语言相关联。 举例来说,马克(Mark)懂法语和西班牙语。 以此为基础,我将尝试找出还有谁会说法语和西班牙语。 因此,如果杰里米知道法语,西班牙语和德语,他就会出现在结果中。

有任何想法吗?

到目前为止,我有

accept nameIn prompt 'Search for:'
select name from sc16temp intersect (select lang from sc16temp where name='&nameIn');

看起来您想要带提醒的关系划分

SQL小提琴

Oracle 11g R2架构设置

create table YourTable
(
  Name varchar(10),
  Lang varchar(10),
  primary key (Name, Lang)
);

insert into YourTable values('John', 'English');
insert into YourTable values('John', 'French');
insert into YourTable values('John', 'Spanish');
insert into YourTable values('John', 'Swedish');

insert into YourTable values('Mark', 'English');
insert into YourTable values('Mark', 'French');
insert into YourTable values('Mark', 'Spanish');

insert into YourTable values('Peter', 'English');
insert into YourTable values('Peter', 'French');

查询1

select T1.Name
from YourTable T1
  inner join YourTable T2
    on T1.Lang = T2.Lang
where T2.Name = 'Mark'
group by T1.Name
having count(T1.Lang) = (select count(Lang) 
                         from YourTable 
                         where Name = 'Mark')

结果

| NAME |
--------
| John |
| Mark |

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM