我有一个像
这样的陈述表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 - 如何达到?
答案 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'