数据库SQL实践47:如何获取emp_v和employees相同的数据

思路:

先找出emp_v中的emp_no,然后作为集合,判断employees中的emp_no是否在这个集合中,若在则取出记录。

select * from employees where emp_no in (select emp_no from emp_v);

由于视图 emp_v 的记录是从 employees 中导出的,所以要判断两者中相等的数据,只需要判断emp_no相等即可。

方法一:用 WHERE 选取二者 emp_no 相等的记录

select em.* from employees as em, emp_v as ev where em.emp_no = ev.emp_no

方法二:用 intersect 关键字求 employees 和 emp_v 的交集

select * from employees intersect select * from emp_v

方法三:仔细一想,emp_v的全部记录均由 employees 导出,因此可以投机取巧,直接输出 emp_v 所有记录

select * from emp_v;

 【错误方法:】用以下方法直接输出 *,会得到两张表中符合条件的重复记录,因此不合题意,必须在 * 前加表名作限定

 

select * from employees, emp_v where employees.emp_no = emp_v.emp_no

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值