2017-10-16 70 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");