簡體   English   中英

使用子查詢的SQL更新

[英]SQL Update using subquery

我正在嘗試使用子查詢來更新表,但它無法識別表別名,當我嘗試運行它時,會彈出一個帶有“ t1.rDate”的框,我的查詢是:

 UPDATE Results SET odds4 = 
(SELECT SUM(IIF(odds >= 4, 1, 0)) FROM Results t1
GROUP BY t1.rDate, t1.rTime, t1.rTrack)
WHERE rDate = t1.rDate AND rTime = t1.rTime AND rTrack = t1.rTrack AND t1.rDate 
>= #2019/05/28#;

例:

   rDate   | rTime | rTrack | horse   | odds | odds4
------------------------------------------------------
28/05/2019 | 13:00 | Ascot  | horse1  | 2.5  |  3
28/05/2019 | 13:00 | Ascot  | horse2  | 34   |  3
28/05/2019 | 13:00 | Ascot  | horse3  | 1.4  |  3
28/05/2019 | 13:00 | Ascot  | horse4  | 6    |  3
28/05/2019 | 13:00 | Ascot  | horse5  | 4    |  3
28/05/2019 | 14:30 | Epsom  | horse1  | 3    |  2
28/05/2019 | 14:30 | Epsom  | horse2  | 1.75 |  2
28/05/2019 | 14:30 | Epsom  | horse3  | 2    |  2
28/05/2019 | 14:30 | Epsom  | horse4  | 12   |  2
28/05/2019 | 14:30 | Epsom  | horse5  | 66   |  2

我認為您想要一個相關的子查詢:

UPDATE Results
    SET odds4 = (SELECT SUM(IIF(t1.odds >= 4, 1, 0))
                 FROM Results t1
                 WHERE t1.rDate = Results.rDate AND
                       t1.rTime = Results.rTime AND
                       t1.rTrack = Results.rTrack
                )
WHERE Results.rDate >= #2019/05/28#;

嘗試這個:

UPDATE Results SET odds4 = 
                 CASE 
                    WHEN odds >= 4 THEN 1
                    ELSE 0
                 END 
WHERE rDate >= #2019/05/28#;

編輯代碼:

UPDATE Results SET odds4 = (SELECT t1.odds4
 FROM
    (
     SELECT  rDate,
                     rTime,
                     rTrack,
                    SUM(IIF(odds >= 4, 1, 0)) AS odds4
      FROM Results
     GROUP BY rDate, rTime, rTrack
    ) AS t1

  WHERE Results.rDate = t1.rDate
    AND Results.rTime = t1.rTime
    AND Results.rTrack = t1.rTrack
)
    WHERE Results.rDate >= #2019/05/28#;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM