2014-06-06 39 views
-1
Have accountId ={001,3456,78902,456} 

我想獲得這些accountId的使用IN子句和left join on操作現有表的細節,我應該怎麼形成的查詢?作爲新DB結束我不能夠把正確的拼湊:如何在運營商工作已經硬編碼值匹配

select t1.col2, case when CASE WHEN t1.col3 is null THEN 'False' ELSE 'True' END as value 
FROM table2 t2 left join table1 t1 on t2.col1=t1.col1 
WHERE accountID IN (001,3456,78902,456); //The query is wrong because, I wanted to map using those accountID and get the data? 

上形成的任何查詢快速幫助將是巨大的

現有的表有accountId作爲其中的一列。

+0

'accountid'是表的一部分?總是提供表格定義和您的Postgres版本,並提供類似的問題。並解釋你想要達到的目標。 –

回答

0

猜測...

SELECT t2.col1, t1.col2, (t1.col3 IS NULL) AS value 
FROM table2 t2 
LEFT JOIN table1 t1 USING (col1) 
WHERE t2.accountid IN (1,3456,78902,456); -- t1 or t2 ??? 

我加t2.col1或者你可能會得到只有NULL值的行。
使用更簡單的(t1.col3 IS NULL) AS value,其直接返回booleanTRUE/FALSE
同樣使用更簡單的USING加入同名的列。

如果accountid是在表1爲好,你並不需要在所有加盟..

SELECT t1.col2, (t1.col3 IS NULL) AS value 
FROM table1 
WHERE t1.accountid IN (1,3456,78902,456);