【发布时间】:2016-08-19 07:02:22
【问题描述】:
我有两张这样的桌子
create table department(
Dno int primary key,
name varchar(50) not null
)
create table employee(
empid int primary key,
name varchar(50) not null,
sal decimal(7,2) not null,
dno int foreign key references department(Dno))
我想使用 SQL 子查询获得以下查询的相同结果。
SELECT e.Name, e.Sal, d.Dno, d.Name
FROM Employee e,
Department d
WHERE e.Dno = d.Dno
AND e.name = 'aa'
以下是我尝试过的。
SELECT Name, Sal
FROM Employee
WHERE Name= 'aa' AND Dno IN
(SELECT Dno, name
FROM Department)
这会产生以下错误。
选择列表中只能指定一个表达式,当 EXISTS 没有引入子查询。
【问题讨论】:
-
只需在子查询中执行
select dno from department,您不需要选择name列 -
@msanz 如果我想使用子查询显示所有两个表,我该怎么做?
-
在下面查看我的答案
-
你为什么不直接使用 join ?
-
附带说明:您当然应该避免使用Old Style JOINS,并使用明确的
INNER JOINs
标签: sql sql-server join subquery