ORACLE一个字段对应多个值,判断是否存在某个值然后返回存在这个值的记录?
如下图,我返回科目中存在“英语”的年份,即2015对应的所有记录(2014对应的记录中没有英语就排除了),如何实现?...
如下图,我返回科目中 存在 “英语”的年份,即2015对应的所有记录(2014对应的记录中没有英语就排除了),如何实现?
展开
3个回答
2016-12-01
展开全部
首先你要明确下,这份原数据要不要保留,如果不要保留直接执行下面的delete语句即可,
delete from 表名
where 年份 not in (select distinct 年份 from 表名 where 科目='英语');
也可以新建一个表,把需要的数据抽出来:
create table test as select 年份,科目from 表名
where (年份 in (select distinct 年份 from 表名 where 科目='英语'))
delete from 表名
where 年份 not in (select distinct 年份 from 表名 where 科目='英语');
也可以新建一个表,把需要的数据抽出来:
create table test as select 年份,科目from 表名
where (年份 in (select distinct 年份 from 表名 where 科目='英语'))
展开全部
select 年份,科目
from 表 t1
where exists (select 1 from 表 t2 where t2.科目=英语 and t1.年份=t2.年份)
from 表 t1
where exists (select 1 from 表 t2 where t2.科目=英语 and t1.年份=t2.年份)
追问
t2是什么鬼
追答
都是一个表,取得别名不同
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
select 年份
from table
where 科目='英语'
这样不行吗?
from table
where 科目='英语'
这样不行吗?
更多追问追答
追问
因为2015中存在英语,所以返回2015对应的所有记录,而不是只返回那一条数据。
追答
select *
from table
where 年份 in
(
select 年份
from table
where 科目='英语'
)
这样不就行了?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询