[英]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.