2013-04-26 73 views
0

,我有以下結果從查詢MySQL的:有兩個不同的列查詢不同的列日期

SELECT DISTINCT user_id, 
       IF(ra.status = 1, created_datetime, 'No record') AS ACTIVATED, 
       IF(ra.status = 0, created_datetime, 'No record') AS DE_ACTIVATED 
FROM accounts ra 
WHERE user_id IN (12345678); 

+----------+---------------------+---------------------+ 
| user_id | ACTIVATED   | DE_ACTIVATED  | 
+----------+---------------------+---------------------+ 
| 12345678 | No record   | 2013-04-28 02:32:36 | 
| 12345678 | 2013-03-28 02:32:36 | No record   | 
+----------+---------------------+---------------------+ 

我想只有1行的記錄,結合激活和去激活。基本上,這樣做。

+----------+---------------------+---------------------+ 
| user_id | ACTIVATED   | DE_ACTIVATED  | 
+----------+---------------------+---------------------+ 
| 12345678 | 2013-03-28 02:32:36 | 2013-04-28 02:32:36 | 
+----------+---------------------+---------------------+ 

任何幫助是非常感謝,因爲我建立我的查詢忍者技能。

問候

+0

這兩者之間有什麼關係?爲什麼不只是獲得兩列的MAX? – Kermit 2013-04-26 02:47:07

回答

1

以這兩個條件的MAX,但要「假」條件評估爲null。然後把它包在COALESCE所以如果calcualted MAX爲null,它會與no record替代:

SELECT user_id, 
    COALESCE(MAX(IF(ra.status = 1, created_datetime, null)), 'No record') AS Activated, 
    COALESCE(MAX(IF(ra.status = 0, created_datetime, null)), 'No record') AS Deactivated 
FROM accounts ra 
WHERE user_id IN (12345678) 

如果你會查詢一個以上的用戶,這添加到末尾:

GROUP BY user_id 
+0

太棒了!謝謝 – 2013-04-26 03:35:43