空字符串用单引号.不用双引号.
int是数值型..怎么能赋字符串值?第一眼看到这两个问题.

解决方案 »

  1.   

    两个select都有数据时怎么办呢
      

  2.   

    1楼的,谢谢提醒。忙给忽略了。2楼的,我是想通过第一个SELECT给@Code 赋值。
    然后给第二个Select 用,得到想要的ID。
    第三个SELECT才是我要的数据。前两个SELECT肯定都值。
      

  3.   

    create function a(@a1 varchar(20))
    returns table
    as 
       return ( select * from c where a2 = (select top 1 a.a2 from c a,c b where a.id=b.a3 and b.a2 = @a1)
      

  4.   

    CREATE   function   a(@a1   varchar(20)) 
    returns  @r table (...)    --这里把表结构写清楚
    as 
    begin 
      declare   @Code   int 
      set   @Code   =   "" 
      SELECT   TOP   1   @Code   =   a3   FROM   c   WHERE   (a2   =   @a1)           //关联ID   父级的其中一个ID 
      SELECT   TOP   1   @Code   =   a2   FROM   c   WHERE   (ID   =   @Code)       //父帐号 
      insert @r SELECT   *   FROM   c   WHERE   (a2   =   @Code)       //   父帐号相关信息 
      return
    END 
      

  5.   

    8楼最后少一个括号create function a(@a1 varchar(20))
    returns table
    as 
       return ( select * from c where a2 = (select top 1 a.a2 from c a,c b where a.id=b.a3 and b.a2 = @a1))
      

  6.   

    select top 1 a.a2 from c a,c b where a.id=b.a3 and b.a2 = @a1
    的执行效率和分开查的区别很大吧。
    因为a.id=b.a3 可能有 NNNN条如果
    select top 1 a.a2 from c a,c b where b.a2 = @a1 and a.id=b.a3这样子是不是先找到一行。在对比这行?一共就2条数据
      

  7.   

    SELECT TOP 1 b.b1
    FROM a b INNER JOIN
          a c ON c.b1 = 'a2' AND b.ID = c.AID是不是要快于 SELECT TOP 1 b.b1
    FROM a b INNER JOIN
          a c ON b.ID = c.AID  AND c.b1 = 'a2' 
      

  8.   

    是先执行 SELECT  还是  INNER   JOIN?
    我的理解是先执行内嵌