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

解决方案 »

  1.   

    雇员数据库如下:
    employee(employee_name,street,city)
    works(employee_name,company_name,salary)
    company(company_name,city)
    manager(employee_name,company_name)
      

  2.   

    请问我代码改成这样,结果还是一样吗?先谢谢了
    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
      

  3.   

    把e.employee_name改为w.employee_name结果也一样吗,因为下面的where语句??
      

  4.   


    没的,因为你等值连接,条件是w.employee_name=e.employee_name 
      

  5.   

    为什么我总觉得第二个是笛卡尔积组合。如果你的表连接条件是主键那肯定是一样的。
    如果不是主键,也或者说分别都是多个值,那么运算出来的结果肯定不一样。举个例子,
    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='*'
    他运算出来的结果大于三条。
      

  6.   

    楼主你的表是这样的,看到这样的表我不会吧employee_name作为主键,很显然,很明显这世界上重名的情况很多,如果考虑到重名,这作为主键就不应该了。
    我建议楼主加上主键 employeeID,然后通过ID来进行表连接,这样最好。要不然楼主算出来的结果肯定有问题。
    第一SQL语句肯定会少结果,第二个SQL语句肯定会多结果。要得出正确结果你最好用主键连接。
    或者你join on 也行,我一般用join on,自我感觉join on 和第二个用法差不多,但是运算会更快点,而且left join 的时候还可以查出如果employee存在而另一张表不存在该数据的情况下的结果。
    我这么说不知道楼主明白了 没有建议楼主增加主键。
      

  7.   

    具体join 的用法你可以咨询百度大婶。我上面说的估计不清晰
      

  8.   

    如果只有B表多条,等值连接还是得看情况。
    如果以B表中a的信息为基准,,那还得用等值连接。要不然结果就缺少了
    如果以A表中a的信息为基准,用第一个sql语句才行。
    如果同时要看到A和B中关于a的信息,这种情况就要加上限制语句了。
    以上是按照1VS多情况下说的
    但是如果A 和 B都有重复a的情况时,等值连接绝对不能用,结果肯定乱七八糟的。
      

  9.   

    我说过啊。如果是主键的话就是一样的。
    不过我不赞成用name作为主键啦。不过随lz意思了。