//这是我的表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
答案 0 :(得分: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 ║
╚════════════════╩═════════════╝
答案 1 :(得分:1)
在Oracle中,我们可以使用左外连接
SELECT a.TransactionNum,b.Description FROM Table1 a,Table2 b
WHERE a.Type=b.Type(+) ORDER BY TransactionNum
答案 2 :(得分:1)
SELECT a.TransactionNum,isnull(b.Description,0)
FROM Table1 a
LEFT JOIN Table2 b
On a.Type = b.Type
Order by a.TransactionNum