SQL子查询和联接
有两张桌子SQL子查询和联接,sql,Sql,有两张桌子 EMP(empname PK, empno, sal, comm, deptno, hiredate, job, mgr) DEPT(depnto, dname, loc) 问题是 a) 显示收入第一高的ename和dname 他们给出了一条语句,这必须只使用子查询和连接来完成 所以我开始是这样的: select A.ename, B.dname from emp A, dept B where A.deptno=B.deptno 我尝试了各种烫发和梳子,但是我没有得到join
EMP(empname PK, empno, sal, comm, deptno, hiredate, job, mgr)
DEPT(depnto, dname, loc)
问题是
a) 显示收入第一高的ename和dname
他们给出了一条语句,这必须只使用子查询和连接来完成
所以我开始是这样的:
select A.ename, B.dname from emp A, dept B where A.deptno=B.deptno
我尝试了各种烫发和梳子,但是我没有得到join语句
这不是一个家庭作业问题,我只是想解决课本上的练习题。提前谢谢你,我拿到了我的最高工资记录。这将按薪资对记录进行排序,最高的在顶部(
DESC
=降序,因此最高最低)
那么我过去只返回1条记录
要获取dname
,我需要与2个deptno
列相关的表
SELECT TOP 1 e.empname
,d.dname
FROM [EMP] e
JOIN [DEPT] d ON d.deptno=e.deptno
ORDER BY e.sal DESC
我希望这有助于获得我的最高工资记录。这将按薪资对记录进行排序,最高的在顶部(
DESC
=降序,因此最高最低)
那么我过去只返回1条记录
要获取dname
,我需要与2个deptno
列相关的表
SELECT TOP 1 e.empname
,d.dname
FROM [EMP] e
JOIN [DEPT] d ON d.deptno=e.deptno
ORDER BY e.sal DESC
我希望这有帮助您可以尝试以下查询:
SELECT emp.ename,dept.dname FROM emp
JOIN dept ON emp.deptno=dept.deptno
WHERE emp.sal=(SELECT MAX(sal) FROM emp)
您可以尝试以下查询:
SELECT emp.ename,dept.dname FROM emp
JOIN dept ON emp.deptno=dept.deptno
WHERE emp.sal=(SELECT MAX(sal) FROM emp)
教科书练习
应该是家庭作业的别名
:)好的,那么如果问题是找到最高工资,你能为此编写SQL吗?然后,您是否可以使用它按薪资进行查询,即您是否可以编写一个查询来查找给定薪资的名称和部门?(顺便说一句,你写的是一个老式的连接。)你使用的是一本非常旧的教科书吗?您现有的查询使用隐式连接语法,但过去二十年编写的教科书确实应该使用ANSI-92显式连接语法(除非它是为不支持该语法的RDBMS编写的)。@MarkBannister-@MartinSmith:我想随着年龄的增长,我的SQL编码能力越来越弱……;)<代码>教科书练习应该是家庭作业的别名
:)好的,那么如果问题是找到最高工资-你能为此编写SQL吗?然后,您是否可以使用它按薪资进行查询,即您是否可以编写一个查询来查找给定薪资的名称和部门?(顺便说一句,你写的是一个老式的连接。)你使用的是一本非常旧的教科书吗?您现有的查询使用隐式连接语法,但过去二十年编写的教科书确实应该使用ANSI-92显式连接语法(除非它是为不支持该语法的RDBMS编写的)。@MarkBannister-@MartinSmith:我想随着年龄的增长,我的SQL编码能力越来越弱……;)