select *
from employee
where employee_name in
(select employee name
from works
where company_name = ’First Bank Corporation’ and salary > 10000)
这是我自己写的代码:
select e.*
from works w,employee e
where w.company_name = ’First Bank Corporation’ and w.employee_name=e.employee_name and w.salary>10000
from employee
where employee_name in
(select employee name
from works
where company_name = ’First Bank Corporation’ and salary > 10000)
这是我自己写的代码:
select e.*
from works w,employee e
where w.company_name = ’First Bank Corporation’ and w.employee_name=e.employee_name and w.salary>10000
employee(employee_name,street,city)
works(employee_name,company_name,salary)
company(company_name,city)
manager(employee_name,company_name)
select e.*(e.employee_name,street,e.city或者改为w.employee_name,street,city)
from works w,employee e
where w.company_name = ’First Bank Corporation’ and w.employee_name=e.employee_name and w.salary>10000
没的,因为你等值连接,条件是w.employee_name=e.employee_name
如果不是主键,也或者说分别都是多个值,那么运算出来的结果肯定不一样。举个例子,
TABLE A(a,b,c,d,e),B(a,c,d,f,g,h)
如果A共有10行数据,B共有20行数据,其中A,B中a相等行共有3条
若B中的a没有重复项,
SELECT * FROM A WHERE a in (select a from B where d='*')
他运算出来的结果是三条值,
SELECT * FROM A A,B B WHERE A.a=B.a AND B.d='*'
结果同上
若B中的a有重复项SELECT * FROM A WHERE a in (select a from B where d='*')
他运算出来的结果是三条值,
SELECT * FROM A A,B B WHERE A.a=B.a AND B.d='*'
他运算出来的结果大于三条。
我建议楼主加上主键 employeeID,然后通过ID来进行表连接,这样最好。要不然楼主算出来的结果肯定有问题。
第一SQL语句肯定会少结果,第二个SQL语句肯定会多结果。要得出正确结果你最好用主键连接。
或者你join on 也行,我一般用join on,自我感觉join on 和第二个用法差不多,但是运算会更快点,而且left join 的时候还可以查出如果employee存在而另一张表不存在该数据的情况下的结果。
我这么说不知道楼主明白了 没有建议楼主增加主键。
如果以B表中a的信息为基准,,那还得用等值连接。要不然结果就缺少了
如果以A表中a的信息为基准,用第一个sql语句才行。
如果同时要看到A和B中关于a的信息,这种情况就要加上限制语句了。
以上是按照1VS多情况下说的
但是如果A 和 B都有重复a的情况时,等值连接绝对不能用,结果肯定乱七八糟的。
不过我不赞成用name作为主键啦。不过随lz意思了。