1

//这是我的表1

    TransactionNum     Type  
    65658               0  
    65659               0  
    65660              449  
    65661               0  

//这是我的表2

    Type    Description          
    445 Discount #1  
    446 Discount #2  
    447 Discount #3  
    448 Discount #4  
    449 Discount #5  
    450 Discount #6  

//这是我的脚本

    SELECT a.TransactionNum,b.Description FROM Table1 a,Table2 b
    WHERE a.Type=b.Type ORDER BY TransactionNum  

//结果

    TransactionNum   Description
    65659            Discount #4

//我希望结果是这样的,0类型的TransactionNum也应该包含在结果中,请帮帮我,我这里使用的是SQL2000。

    TransactionNum      Description   
    65658               0  
    65659               0  
    65660              Discount #5  
    65661               0
4

3 回答 3

9

改为使用LEFT JOIN

SELECT a.TransactionNum, 
       COALESCE(b.Description, CAST (a.Type AS VARCHAR(20))) AS Description
FROM   Table1 a LEFT JOIN Table2 b
          ON a.Type=b.Type
ORDER  BY a.TransactionNum

要进一步了解有关联接的更多信息,请访问以下链接:

输出

╔════════════════╦═════════════╗
║ TRANSACTIONNUM ║ DESCRIPTION ║
╠════════════════╬═════════════╣
║          65658 ║ 0           ║
║          65659 ║ 0           ║
║          65660 ║ Discount #5 ║
║          65661 ║ 0           ║
╚════════════════╩═════════════╝
于 2013-04-19T06:33:02.767 回答
1

在 Oracle 中,我们可以使用左外连接

     SELECT a.TransactionNum,b.Description FROM Table1 a,Table2 b
     WHERE a.Type=b.Type(+) ORDER BY TransactionNum 
于 2013-04-19T06:35:33.663 回答
1
SELECT a.TransactionNum,isnull(b.Description,0)
FROM Table1 a
LEFT JOIN Table2 b
On a.Type = b.Type
Order by a.TransactionNum
于 2013-04-19T06:36:32.423 回答