2014-05-07 46 views
0

我有两个表。如何在case语句中使用子查询?

table1的

t1id var1 var2 
1 xxx ccc 
2 ccc ddd 
3 eee bbb 

表2

t2id attribute 
1 lll 
3 ggg 
4 ggg 
5 lll 

,我需要选择*从表1,与串联t1idattribute如果t1id=t2id

这里是我试过

SEL CASE WHEN (t1id IN (SELECT t2id FROM table2)) 
    THEN t1id || attribute 
    ELSE t1id END AS t1idModified, 
var1 , var2 
FROM table1,table2 

但是,它没有奏效。如何在案例中使用子查询?

回答

0

即使该语法被允许也不会返回预期的结果。

t1id的数据类型是什么数字或字符串?

你可以把它改写成外连接(返回即使没有匹配的行)和COALESCE(CONCAT属性或“”):

SELECT 
    TRIM(t1.t1id) || (COALESCE(t2.ATTRIBUTE, '')) AS t1idModified, 
    var1, var2 
FROM table1 AS t1 
LEFT JOIN table2 AS t2 
ON t1.t1id = t2.t2id