SQL语句包含缺少的属性

时间:2011-12-30 14:02:15

标签: sql

我有一个像

这样的陈述

表A

ID    X
1     x1
2     x2
3     x3

表B

ID    AttributeName      AttributeValue
1     Type               some
2     not                nothing
3     Type               other

我现在想要一个像

这样的结果
1,x1,some
2,x2,''
3,x3,other

SQL

SELECT TableA.ID, TableA.X, TableB.AttributeValue
FROM TableA, TableB
WHERE TableA.ID = TableB.ID AND TableB.AttributeName = 'Type'

为我提供了包含X和TypeDescription的所有ID,其中存在属性类型。 但我也想要没有设置类型的ID - 如何达到?

1 个答案:

答案 0 :(得分:3)

您需要外部联接:

SELECT TableA.ID, TableA.X, TableB.AttributeValue
FROM TableA
LEFT OUTER JOIN TableB ON TableA.ID = TableB.ID AND TableB.AttributeName = 'Type'

对于id = 2,这将返回NULL,而不是空字符串''。如果您需要一个空字符串,请使用coalesce。在SQL Server上,它看起来像这样:

SELECT TableA.ID, TableA.X, COALESCE(TableB.AttributeValue, '')
FROM TableA
LEFT OUTER JOIN TableB ON TableA.ID = TableB.ID AND TableB.AttributeName = 'Type'