2016-06-14 32 views
-1

記錄我有以下字段:獲得SQL

SELECT `sms_id`, 
     `u_id`, 
     `sender_id`, 
     `mobile_no`, 
     `message`, 
     `campaign_name`, 
     `status`, 
     `request_id`, 
     `route_id`, 
     `totalnumber`, 
     `msgcreadit`, 
     `date1`, 
     `deductbal`, 
     `submited` 
FROM `send_sms` 
WHERE 1 

我想選擇u_idstatus ="pending",但我根據[date1]日期字段想要最新的掛起狀態,我也想計數個人u_id s與status ="pending"

我該怎麼辦?

+1

如果你喜歡,可以考慮下列行爲這個簡單的兩步過程:1.如果您還沒有這樣做因此,請提供適當的CREATE和INSERT語句(和/或sqlfiddle),以便我們可以更輕鬆地複製問題。 2.如果您尚未這樣做,請提供與步驟1中提供的信息相對應的所需結果集。 – Strawberry

回答

0

在MySQL中,你可以這樣做:

SELECT s.* 
FROM `send_sms` s 
WHERE s.status = 'pending' AND 
     s.date1 = (SELECT MAX(s2.date1) FROM send_sms s2 WHERE s2.u_id = s.u_id and s2.status = 'pending'); 
+0

date1中的我的日期格式與[dmY H:i:s]相似 –

+0

我得到空格結果:( –

+1

I將'AND s.status ='pending''添加到子查詢WHERE子句中 – Alex

0

只是另一種方法:

SELECT s.* 
FROM `send_sms` s 
LEFT JOIN `send_sms` s2 
ON s.date1 < s2.date1 
    AND s2.u_id = s.u_id 
    AND s2.status = 'pending' 
WHERE s.status = 'pending' 
    AND s2.status IS NULL 
+0

查詢是正確的,但我也希望計數所有u_id,其狀態處於掛起狀態,只有一個更正請求 –

+0

所有'u_id' !? so你想在每一行中得到例如10或者** 1000 **重複值爲** 1000 **的行? – Alex