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