比如
两个表 产品表 和产品类型表
产品表(pro) 有 id 和 proname  typeid
类型表(protype) id  typename我想要获取产品名称 和类型
 
1 语句 
select proname,(select typename form protype where id=typeid ) as typename from pro
2语句 
select proname,typename from pro,protype where pro.typeid=protype.id
或者 join left 或者什么的
改用那个呢
其实我更倾向于第一种。看着舒服,但是不知道用着舒服不,求解@!

解决方案 »

  1.   

    我通常用inner join 
    select proname,typename from pro t1 inner join protype t2 on t1.typeid=t2.id
      

  2.   

    其实这两句在效率上本来区别就不大,一个是left outer join,一个是inner join,用那个都行,区别不大。
    反而是语义上你应该要注意下的。
      

  3.   

    在数据量大的时候第二种的效率应该会更高一些,在数据量小的时候效果不是很明显。
    外部链接时和全链接时sql server 默认的会去做链接优化,有一个链接提示,是sql server 自动选择的,也可以手动加上,但是我们平时写sql 的时候一般不会加:如neat join, hash join 等等。详细的可以去查看表链接提示
      

  4.   

    nest join写错了上面
      

  5.   


    --测试表T_Lock 数据量:236314条
    --写法1
    SELECT * FROM T_Lock a,T_Lock b 
    WHERE a.LockId=b.LockId
    AND a.LockId<100000
    --写法2
    SELECT a.LockId,(SELECT LockId FROM T_Lock WHERE LockId=a.LockId ) FROM T_Lock a
    WHERE a.LockId<100000返回的执行计划: