2017-10-16 69 views
0

我需要使用默认值,如果在sql中的值为null其中条件如下。设置默认参数为在哪里条件在sql中

SELECT sla.incident_generated_sla from eventedge_events_sla sla where e.client_id=sla.client_id and sla.priority_id=e.priority_id 

我用下面的查询但不工作。

(SELECT sla.incident_generated_sla from eventedge_events_sla sla where e.client_id=sla.client_id and sla.priority_id=(IsNull(e.priority_id,"2"))) 
+0

标记您正在使用的DBMS(MySQL,MS SQL Server等)。 –

+0

'COALESCE'? https://dev.mysql.com/doc/refman/5.7/en/comparison-operators.html#function_coalesce –

回答

0
SELECT sla.incident_generated_sla from eventedge_events_sla sla 
where e.client_id=sla.client_id and sla.priority_id=e.priority_id 

(SELECT sla.incident_generated_sla from eventedge_events_sla sla 
where e.client_id=sla.client_id and sla.priority_id=(IsNull(e.priority_id,"2"))) 

你已经几乎做到了。

检查这修正自己的尝试:

SELECT sla.incident_generated_sla from eventedge_events_sla sla 
    where e.client_id=sla.client_id and sla.priority_id=ISNULL(e.priority_id,2) 

现在,我不知道你的“E”是什么,但如果这是你要找的CLIENT_ID宣布,它应该工作。

仔细看看我对ISNULL的更正。

编辑:在评论这个答案是正确的;

SELECT 
    e.event_start_time, 
    sla.incident_generated_sla 

FROM 
    eventedge_events_sla sla 
    left outer join eventedge_events e 
    ON e.client_id = sla.client_id 
     AND isnull(e.priority_id,2) = sla.priority_id 
+0

否则,它看起来像你还没有宣布你的“e”。 - 你可以用INNER JOIN做到这一点。让我知道你的表名“e”应该被声明,并且我会为你编辑答案。 – MadsBinger

+0

#1064 - 您的SQL语法错误;检查与您的MySQL服务器版本相对应的手册,以便在第2行的'2)LIMIT 0,30'处使用正确的语法 – abhimanyu

+0

SELECT e.event_start_time,(从eventedge_events_sla sla选择sla.incident_generated_sla,其中e.client_id = sla.client_id和sla.priority_id = e.priority_id)作为sla从'eventedge_tickets'吨,'eventedge_events' e – abhimanyu

0

这是IFNULL如果是MySQL。

SELECT sla.incident_generated_sla 
FROM eventedge_events_sla sla 
    LEFT JOIN eventedge_events e ON e.client_id = sla.client_id 
WHERE sla.priority_id = IFNULL(e.priority_id,"2");