簡體   English   中英

如何將此查詢解決為連接查詢

[英]how to solve this query into join query

我的同事要我更改此查詢

UPDATE user_sesi a SET   
a.`soal_start`= (SELECT waktu_buat FROM cc_soal_aja b WHERE b.`class_id`=a.`class_id` AND b.`id_modul`=a.`modul_id` AND b.`id_sesi`=a.`id_sesi` AND b.`created_by`=a.`user_id` ORDER BY b.`soal_konter` DESC LIMIT 1);

2183 行受影響

進入連接查詢,我已經嘗試過,但結果總是與第一個查詢不同

UPDATE user_sesi a
JOIN 
(
    SELECT waktu_buat,class_id,id_modul,id_sesi,created_by
    FROM cc_soal_aja 
    ORDER BY soal_konter DESC 
    LIMIT 1
) a14
ON a14.`class_id`=a.`class_id` AND 
a14.`id_modul`=a.`modul.id` AND 
a14.`id_sesi`=a.`id_sesi` AND 
a14.`created_by`=a.`user_id`
SET a.soal_start=a14.created_time

1 行受影響

誰能告訴我我錯過了什么,謝謝幫助

我不確定定期更新加入是否會按照您想要的方式工作。 但是,如果您使用的是 MySQL 8+,我們也許可以使用ROW_NUMBER

UPDATE user_sesi a
INNER JOIN
(
    SELECT *, ROW_NUMBER() OVER (PARTITION BY waktu_buat, class_id, id_modul, id_sesi,
                                              created_by
                                 ORDER BY soal_konter DESC) rn
    FROM cc_soal_aja 
) a14
    ON a14.class_id = a.class_id AND
       a14.id_modul = a.modul.id AND
       a14.id_sesi = a.id_sesi AND
       a14.created_by = a.user_id
SET
    soal_start = a14.created_time
WHERE
    rn = 1;

暫無
暫無

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

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