如果理解这句SQL语句的意思?oracle面试题。找出忘记填写性别的员工

2025-02-28 20:17:14
推荐回答(4个)
回答1:

SELECT id FROM emp1 UNION ALL SELECT id FROM sext
--将两个表所有的ID列查询出来合并在一起 列名为ID

--而后外面的意思是将员工表和上面查出的表进行关联
找到记录数和小于2条的 也就是只有b和c

回答2:

union all 是 前面一句语句 和后面一句语句 得到的所有值 不去掉重复的。 这个sql语句是:查出 emp1表 和 sext表 的所有id值 。给这个设个表名 叫做t emp1表 叫做 e , 查到的 id<2的 t表中的记录,根据这个记录查询 emp1表

回答3:

--把这两个表id查出来组成一个记录集
SELECT id FROM emp1 UNION ALL SELECT id FROM sext 
------------------
id
1
2
3
4
1
4
5
--上面的记录集取别名为t  根据这个t 的id等于emp1的id的条件查出t中记录数小于2的emp1记录
SELECT * FROM emp1 e WHERE (SELECT COUNT(*)
FROM (SELECT id FROM emp1 UNION ALL SELECT id FROM sext) t
WHERE t.id = e.id) < 2
---------------------------
id name
2  b
3  c

回答4:

select * from (select a.id ,a.name ,b.sex from emp1 a
left join sext b on a.id = b.id ) q where q.sex is not null