存在如下的视图: CREATE TABLE employees ( emp _ no int NOT NULL , birth date date NOT NULL , first _ name varchar (14) NOT NULL , last _ name varchar (16) NOT NULL , gender char (1) NOT NULL , hire _ date date NOT NULL , PRIMARY KEY ( emp _ no ) CREATE VIEW emp _ v AS select * FROM employees WHERE emp _ no >10005; 获取 employees 中的行数据,且这些行也存在于 emp _ v 中。注意不能使用 intersect 关键字。输出格式 emp _ no birth _ date first _ name last _ name gender hire _ date 100061953-04-20 Anneke 1989-06-02 100071957-05-23 Tzvetar Preusig F Zielinski F 1989-02-10 100081958-02-19 Saniya 4命安 -77 100091952-04-19 Sumant Kalloufi M 1994-09-15 1985-02-18 Peac F 1989-08-24 100101963-06-01 Duangkaew Piveteau F 100111953-11-07 Mary Sluis 1990-01-22
时间: 2023-06-12 07:05:05 浏览: 135
可以使用子查询来实现该需求。具体的 SQL 语句如下:
```
SELECT emp_no, birth_date, first_name, last_name, gender, hire_date
FROM employees
WHERE emp_no > 10005
AND EXISTS (
SELECT 1
FROM emp_v
WHERE emp_no = employees.emp_no
);
```
解释:
首先在 employees 表中筛选出 emp_no 大于 10005 的行,然后使用 EXISTS 子查询来判断该行是否也存在于 emp_v 视图中。如果存在,则将该行的数据返回。
输出格式:
```
emp_no birth_date first_name last_name gender hire_date
----------------------------------------------------------------------------
10006 1953-04-20 Anneke Preusig F 1989-06-02
10007 1957-05-23 Tzvetar Zielinski F 1989-02-10
10008 1958-02-19 Saniya Peac F 1985-02-18
10009 1952-04-19 Sumant Kalloufi M 1994-09-15
10010 1963-06-01 Duangkaew Piveteau F 1989-08-24
10011 1953-11-07 Mary Sluis F 1990-01-22
```
阅读全文