table a{
name
no
age
}
table b{
no
card
curse1
curse2
}
no和name为一一对应的,现在我想根据card得到一个查询结果
card
no
name
curse1
curse2
请教我该怎么写这条SQL语句

解决方案 »

  1.   

    拣分 select tableb.*,tablea.name from tablea inner join tableb on tablea.no=tableb.no
      

  2.   


    select b.card,b.no,a.name,b.curse1,b.curse2
    from a inner join b on a.no=b.no
      

  3.   


    select b.card,b.no,a.name,b.curse1,b.curse2
    from a inner join b on a.no=b.no
    select b.card,b.no,a.name,b.curse1,b.curse2
    from a left join b on a.no=b.noinner join 只要a.b中含有等值就列出,最终行数等于a.b中条件匹配的行
    left join 匹配a.b 最终行数等于a的行数
      

  4.   

    select b.card,b.no,a.name,b.curse1,b.curse2
    from a inner join b on a.no=b.no
      

  5.   

    我能否写成下面这种方式,和inner join有什么差别
    select b.card,b.no,a.name,b.curse1,b.curse2 
    from a,b where a.no=b.no 
      

  6.   

    其实就是 inner join。
    不过 inner join 是标准 sql,所有数据库都通用,推荐用 inner join。
      

  7.   

    "select name from a where a.no=b.no union all select no ,card ,curse1 ,curse2 from b"
      

  8.   

    建议
    select b.card,b.no,a.name,b.curse1,b.curse2 
    from a inner join b on a.no=b.no 
    这样写
      

  9.   

    差别大了where 匹配时,是先查询到全部结果,后过滤,inner join 是直接在过滤条件的基础做查询,所以效率是个区别另外where 在1层套用时和inner join区别还相对小些,而多层套用时,和inner join根本就不是一种结果了.在这种查询中,还是建议使用inner join 或者left join 或者 right join 区别举例
    主表 含有子表A,B,C的外键ID当查询主表每行数据对应的A,B,C是否已经填列时,必须是left join,类似如下:
    父表
    id    aid    bid    cid此时用left join 
    select t1.id,t2.aid,t3,bid,t4.cid from t1
    left join t2 on t1.aid = t2.id
    left join t3 on t1.bid = t3.id
    left join t4 on t1.cid = t4.id这样当A,B,C有不存在的数据时,将返回类似结果
    1,null,null,x
      

  10.   

    不要想当然,自己用 SQL 查询分析器看看,执行计划一模一样。
    只讨论 where 和 inner join,left join 本来就不一样。
      

  11.   

    在微软的数据库中含有查询优化器,所以查询分析器是这样执行如果没有查询优化器,where将导致 笛卡尔积 操作,对于这点我觉得老哥一定比我了解.我之所以提到left join 是因为觉得楼主既然不知道用inner join ,我也例举一下left join.
      

  12.   

    这是 SQL Server 数据库自己生成执行计划时的优化,并不是查询分析器的功能。
    否则如果查询分析器看到的执行计划和通过 ADO 调用的执行计划不同,就做不到通过查询分析器来确定 SQL 语句的优劣。
    复杂的 SQL 往往有多种写法,性能上差1个数量级很正常,这就需要通过查询分析器来选优了。当然也许其它数据库也支持在 where 中连接表,是否有优化也不一定。不过在 SQL Server 中是一样的。