Bản cập nhật của bạn tương đương với bản cập nhật này.
UPDATE schedules s
SET days = (SELECT LISTAGG(day, ', ')
within group ( ORDER BY day_order )
FROM days d
WHERE d.schedule IN ( 'Weekend', 'Weekday' )
AND d.schedule = s.schedule
GROUP BY d.schedule ) ;
Nhưng, tôi không khuyên bạn nên đây. Việc lưu trữ các bản ghi dưới dạng các giá trị được phân tách bằng dấu phẩy nhất định sẽ gây ra sự cố cho bạn trong tương lai. Chỉ sử dụng nó để hiển thị kết quả bằng cách sử dụng truy vấn như bên dưới. Điều này giả định rằng trong bảng ngày của bạn, có các hàng duy nhất cho mỗi ngày. Nếu có các hàng trùng lặp, hãy join
nó cho kết quả khác biệt được thiết lập từ nhiều ngày.
SELECT d.id,
d.schedule,
LISTAGG(s.day, ', ')
within GROUP ( ORDER BY d.day_order )
FROM days d
join schedules s
ON ( d.schedule = s.schedule )
WHERE d.schedule IN ( 'Weekend', 'Weekday' )
GROUP BY d.id,
d.schedule