2012-03-13 48 views
1

在我的查詢中,我想更新表「tblUser_Report」的行。它有日期字段我想更新它具有最高的日期值(我的意思是最近的日期)更新表嵌套查詢(使用函數)

但即時得到錯誤ü不能包括​​「從」,在「更新」 ......任何其他的方式做到這一點只排? P.S.數據庫: - MySQL的

update tblUser_Report set Status='A',S_Date='"+date+"' 
    where Employee_ID="+id+" 
    AND 
    S_Date=(select MAX(S_Date) 
    from tblUser_Report 
    where Employee_ID="+id+")"; 

回答

2

嘗試此查詢,以加入子查詢 -

UPDATE tblUser_Report t1 
JOIN (SELECT MAX(S_Date) s_date 
     FROM 
     tblUser_Report 
     WHERE 
     Employee_ID = 1) t2 
ON t1.s_date = t2.s_date 
SET 
    t1.Status = 'A', t1.S_Date = DATE(NOW()) 
WHERE 
    t1.Employee_ID = 1 
1

但願,tblUser有一個主鍵,然後:

UPDATE tblUser t 
JOIN (
    SELECT the_pk 
    FROM tblUser 
    WHERE [email protected]_id 
    ORDER BY S_Date DESC 
    LIMIT 1) s 
USING (the_pk) 
SET Status = 'A', S_Date = @new_date; 
+0

tblUser_Report沒有主鍵。爲什麼它有多個條目的員工ID ..我選擇行誰的日期字段是最近的。 – Shaggy 2012-03-13 14:30:36

+0

@ sagar-dumbre,那麼我會重寫這個查詢幾乎與Devart的解決方案相同。爲什麼不添加身份字段? – newtover 2012-03-13 14:49:41

+0

上表生成報告,因此它沒有主鍵。一個Emp ID可以有多個條目。選擇具有最近日期的條目 – Shaggy 2012-03-13 14:56:42