'左连接
select tbl1.* from tbl1,tbl2
WHERE  tbl1.emp_id *= tbl2.emp_id 
'右连接
select tbl1.* from tbl1,tbl2
WHERE  tbl1.emp_id =* tbl2.emp_id

解决方案 »

  1.   

    1
    SELECT *
    FROM tbl1 LEFT OUTER JOIN
          tbl2 ON tbl1.emp_id = tbl2.emp_id
    2
    selct * from tbl1,tbl2 where tbl1.emp_id=tbl2.emp_id
      

  2.   

    (+)?
    1.left join
    select tbl1.* from tbl1 left join tbl2 on tbl1.emp_id = tbl2.emp_id 
    -- 不能用where
    2.别名
    select a.* from tbl1 a,tbl2 b where a.emp_id = b.emp_id
      

  3.   

    建议使用ANSI的写法(Left outer Join)而不是*=来做外联接,这种写法容易引起混淆。查询所选的行首先通过 FROM 子句联接条件进行筛选,其次由 WHERE 子句搜索条件筛选,然后由 HAVING 子句搜索条件筛选。可以在 FROM 或 WHERE 子句中指定内联接而不影响最后结果。然而,根据联接条件是在 FROM 子句中还是在 WHERE 子句中,外联接条件与 WHERE 搜索条件的交互可能会不同。因此,建议不要在 WHERE 子句中指定 Transact-SQL 外联接,这种方法不再写入文档并将在以后的版本中除去。例如,下面两个查询对 SELECT 23 行指定左向外联接,用以显示书名标识号、书名以及已出售的书的数量:-- Join in WHERE clause.
    USE pubs
    SELECT t.title_id, t.title, s.qty
    FROM titles AS t, sales AS s
    WHERE t.title_id *= s.title_id-- Join in FROM clause.
    USE pubs
    SELECT t.title_id, t.title, s.qty
    FROM titles AS t LEFT OUTER JOIN sales AS s
       ON t.title_id = s.title_id在下面的查询中,WHERE 子句也指定搜索条件:-- Join and search condition in WHERE clause.
    USE pubs
    SELECT t.title_id, t.title, s.qty
    FROM titles AS t, sales AS s
    WHERE t.title_id *= s.title_id
       AND s.stor_id = '7066'stor_id = '7066' 条件在联接中取值。联接只从 sales 表中选择 stor_id 7066 的行,但由于这是外联接,因此空值在所有其它行中作为存储信息提供。此查询将返回 18 行。可以将联接条件移动到 FROM 子句,而 stor_id 条件留在 WHERE 子句中:USE pubs
    SELECT t.title_id, t.title, s.qty
    FROM titles AS t LEFT OUTER JOIN sales AS s
       ON t.title_id = s.title_id
    WHERE s.stor_id = '7066'由于执行左向外联接之后应用 stor_id = '7066' 限制条件,因此此查询只返回两行。这就消除外联接中 stor_id 为 NULL 值的所有行。若要通过 FROM 子句中的联接条件返回相同的信息,请将 stor_id = '7066' 条件指定为 FROM 子句中 ON join_criteria 部分,然后删除 WHERE 子句:USE pubs
    SELECT t.title_id, t.title, s.qty
    FROM titles AS t LEFT OUTER JOIN sales AS s
       ON t.title_id = s.title_id 
       AND s.stor_id = '7066'