2017-04-13 31 views
0

我是couchbase的新手。無法在網上找到我想要達到的目標。Couchbase中WHERE子句的條件

我想使用特定文檔類型的條件。我的情況將如此 - 如果文檔類型是'type1',那麼在該文檔中找到特定的id,並在文檔類型'type2'中找到特定的id,然後在該文檔類型中查找另一個id。我的查詢如下 -

SELECT DISTINCT appDetail.id, appDetail.group_id_record 
FROM default appDetail 
LEFT JOIN default users ON KEYS appDetail.id 
LEFT JOIN default groups ON KEYS ARRAY 'app_detail::' || TO_STRING(c) FOR c 
IN appDetail.group_id_record END 
WHERE (appDetail.type = 'user' OR appDetail.type = 'app_detail') 

我假設我需要JOIN中的附加條件嗎?

+2

見CASE表達式表達式。 – geraldss

回答

1

使用CASE conditional operator

SELECT DISTINCT CASE WHEN appDetail.type = 'user' THEN appDetail.id WHEN appDetail.type = 'app_detail' THEN appDetail.detailId END, appDetail.group_id_record 
FROM default appDetail 
LEFT JOIN default users ON KEYS appDetail.id 
LEFT JOIN default groups ON KEYS ARRAY 'app_detail::' || TO_STRING(c) FOR c 
IN appDetail.group_id_record END 
WHERE (appDetail.type = 'user' OR appDetail.type = 'app_detail') 

要當心使用DISTINCT在查詢中,因爲你相同組ID雖然類型是不同的(我不認爲你想要這個結果)有條件