https://blog.rosihanari.net/update-data-suatu-tabel-bersumber-dari-tabel-lain-secara-simultan-dengan-query-sql/
GANTI id database 
SET  @num := 0;
UPDATE your_table SET id = @num := (@num+1);
ALTER TABLE your_table AUTO_INCREMENT =1;

Ganti Sbagian Data Database sukses 100%
update tb_name set field_name/nama colum = replace(field_name/nama colum, 'string yang dicari', 'string pengganti');
contoh yg sudah sukses :
UPDATE bulanan SET no_bukti = REPLACE(no_bukti, 'BS', 'SY');
nobukti awalan BS diganti dengan SY


cek double
SELECT kode, produk, COUNT(*) AS jumlah
FROM proyeksi WHERE thn='2025'
GROUP BY kode, produk
HAVING COUNT(*) > 0;

UPDATE DATA ANTAR FILE/COLLUMe
UPDATE pinjaman SET tglAuto =substr(tglsystem,0,10);


update data antar table
UPDATE proyeksi p1
JOIN (
    SELECT kode, produk, SUM(ak+jan + feb + mar + apr + mei + jun + jul + agt + sep + okt+ nov + des) AS saldoAwal
    FROM realita
    WHERE kelompok = 'modal' AND thn = '2024'
    GROUP BY kode, produk
) r2 ON p1.kode = r2.kode AND p1.produk = r2.produk
SET p1.ak = r2.saldoAwal
WHERE p1.produk = 'modal' AND p1.thn = '2025' ;

update data antar database 
UPDATE raker_er_p.realita AS a, rakerkop_holdn_jadi.proyeksi AS b SET a.nov = b.nov,a.des = b.des WHERE a.kode=b.kode AND a.produk=b.produk AND b.kelompok='dpk';

update data dalam satu table
UPDATE realita r1
JOIN (
    SELECT kode, produk, SUM(jan + feb + mar + apr + mei + jun + jul + agt + sep + okt) / 10 AS rata2
    FROM realita
    WHERE kelompok = 'pmby'
    GROUP BY kode, produk
) r2 ON r1.kode = r2.kode AND r1.produk = r2.produk
SET r1.nov = r2.rata2
WHERE r1.kelompok = 'pmby' AND r1.thn = '2024';



pindah data antar database/ atau table

INSERT INTO proyeksi_thn.budgeddivisi(id,kode,no_urut,kelompok,namabudged,p_budged1,p_budged2,p_budged3,p_budged4,p_budged5,p_budged6,p_budged7,p_budged8,p_budged9,p_budged10,p_budged11,p_budged12) SELECT '',kode,no_urut,kelompok,namabudged,p_budged1,p_budged2,p_budged3,p_budged4,p_budged5,p_budged6,p_budged7,p_budged8,p_budged9,p_budged10,p_budged11,p_budged12 FROM proyeksi_thn2.budgeddivisi;


INSERT INTO rake_pusat.proyeksi(id,kode,k_cab,produk,kelompok,thn,ak,jan,feb,mar,apr,mei,jun,jul,agt,sep,okt,nov,des) SELECT '',kode,k_cab,produk,kelompok,thn,ak,jan,feb,mar,apr,mei,jun,jul,agt,sep,okt,nov,des FROM konsolidasi_hotel.proyeksi WHERE produk='kol1';

INSERT INTO raker_hotel.realita(id,kode,k_cab,produk,kelompok,thn,ak,jan,feb,mar,apr,mei,jun,jul,agt,sep,okt,nov,des) SELECT '',kode,k_cab,produk,kelompok,thn,ak,jan,feb,mar,apr,mei,jun,jul,agt,sep,okt,nov,des FROM raker_npfcapem.realita WHERE k_cab='439';

PT GADAI
import gadai register
INSERT INTO pt_gadai_online.registrasi(id,nik,tgl,nama,kelamin,ttl,tgll,nohp,ibu,wali,alamat,rtrw,desa,kec,kab,username,foto,tglsystem) SELECT id,nik,tgl,nama,kelamin,ttl,tgll,nohp,ibu,wali,alamat,rtrw,desa,kec,kab,username,foto,tglsystem FROM pt_gadai.registrasi;

angsuran
INSERT INTO pt_gadai_online.angsuran(rekening,no_bukti,tgl,plafond,pokok,margin,keterangan,username,tglsystem,carabayar) SELECT rekening,no_bukti,tgl,plafond,pokok,margin,keterangan,username,tglsystem,carabayar FROM pt_gadai.angsuran;

pinjaman
INSERT INTO pt_gadai_online.pinjaman(register,rekening,no_bukti,tgl,plafond,jeniscair,barang,jenisbarang,kelengkapan,jaminan,jangkawaktu,jtempo,flat,margin,noseri,kondisi,bakidebet,keterangan,username,tglsystem,taksasi) SELECT register,rekening,no_bukti,tgl,plafond,jeniscair,barang,jenisbarang,kelengkapan,jaminan,jangkawaktu,jtempo,flat,margin,noseri,kondisi,bakidebet,keterangan,username,tglsystem,taksasi FROM pt_gadai.pinjaman;

bukubesar
INSERT INTO pt_gadai_online.bukubesar(no_bukti,tanggal,kode_akun,kode,keterangan,debet,kredit,username,tglsystem) SELECT no_bukti,tanggal,kode_akun,kode,keterangan,debet,kredit,username,tglsystem FROM pt_gadai.bukubesar;

user
INSERT INTO pt_gadai_online.user(nama,jabatan,username,pasword,level,kode,kantor,kode_cab,pembuat,nokode) SELECT nama,jabatan,username,pasword,level,kode,kantor,kode_cab,pembuat,nokode FROM pt_gadai.user;

import Alamat
INSERT INTO pt_gadai_online.alamat(k_prov,provinsi,kode,k_dusun,dusun,k_rtrw,rtrw,k_desa,desa,k_kec,kec,k_kab,kab) SELECT k_prov,provinsi,kode,k_dusun,dusun,k_rtrw,rtrw,k_desa,desa,k_kec,kec,k_kab,kab FROM pt_gadai.alamat;

cintoh import data berdasarkan tgl
INSERT INTO pt_gadai_online.registrasi(id,nik,tgl,nama,kelamin,ttl,tgll,nohp,ibu,wali,alamat,rtrw,desa,kec,kab,username,foto,tglsystem) SELECT id,nik,tgl,nama,kelamin,ttl,tgll,nohp,ibu,wali,alamat,rtrw,desa,kec,kab,username,foto,tglsystem FROM pt_gadai.registrasi WHERE tgl='2024-12-23';

data_undian
INSERT INTO jaras_undian.tbl_undian (nomor,nama_penerima,nia,simpanan,alamat,rtrw,desa,kecamatan,kabupaten,provinsi,no_hp)
SELECT nomor,nama_penerima,nia,simpanan,alamat,rtrw,desa,kecamatan,kabupaten,'Jatim',no_hp 
FROM undian_db.tbl_undian WHERE nia='263.000027';


import budget divisi
INSERT INTO hasil_raker_ugt.budgeddivisi (kode,thn,no_urut,divisi,kelompok,programkerja,langkahnya,alatpendukung,sasaran,pic,timeline)
SELECT kode, thn, no_urut, kelompok, divisi, namabudged, p_budged1, p_budged2, p_budged3, p_budged4, p_budged5, p_budged6, p_budged7, p_budged8, p_budged9, p_budged10, p_budged11, p_budged12 
FROM hasil_raker_budget.budgeddivisi;

import proker divisi
INSERT INTO hasil_raker_ugt.prokerdivisi (kode,thn,no_urut,divisi,kelompok,programkerja,langkahnya,alatpendukung,sasaran,pic,timeline)
SELECT kode,thn,no_urut,divisi,kelompok,programkerja,langkahnya,alatpendukung,sasaran,pic,timeline 
FROM hasil_raker_budget.prokerdivisi;

ganti format awal nomor hap 
 UPDATE registrasi
    SET nohp = CASE
        WHEN nohp LIKE '0%' THEN CONCAT('62', SUBSTRING(nohp, 2))
        WHEN nohp NOT LIKE '62%' THEN CONCAT('62', nohp)
        ELSE nohp
    END

ambil data bakidebet kolek

WITH TunggakanInfo AS (
    SELECT 
        a.rekening,
        c.nama,
        b.tgl as tgl_realisasi,
        b.barang,
        b.jaminan,
        b.jenisbarang,
        SUM(a.plafond) - SUM(a.pokok) AS bakidebet,
        DATEDIFF(
            MAX(CASE WHEN a.pokok > 0 THEN a.tgl ELSE NULL END), 
            '2025-01-20'
        ) as hari_tunggakan
    FROM 
        angsuran a 
        LEFT JOIN pinjaman b 
            ON a.rekening = b.rekening 
            AND b.kode = '101'
        LEFT JOIN registrasi c 
            ON b.register = c.id 
    WHERE 
        a.kode = '101'
        AND a.tgl <= '2025-01-20'
    GROUP BY
        a.rekening,
        c.nama,
        b.tgl,
        b.barang,
        b.jaminan,
        b.jenisbarang
    HAVING 
        (SUM(a.plafond) - SUM(a.pokok)) > 0
)
SELECT 
    rekening,
    nama,
    tgl_realisasi,
    barang,
    jaminan,
    jenisbarang,
    bakidebet,
    hari_tunggakan,
    CASE 
        WHEN bakidebet = 0 THEN 1  -- Lunas
        WHEN hari_tunggakan >= 0 THEN 1  -- Lancar
        WHEN hari_tunggakan > -90 THEN 2  -- Dalam Perhatian Khusus
        WHEN hari_tunggakan > -120 THEN 3  -- Kurang Lancar
        WHEN hari_tunggakan > -180 THEN 4  -- Diragukan
        ELSE 5  -- Macet
    END as kolektibilitas,
    CASE 
        WHEN bakidebet = 0 THEN 'Lunas'
        WHEN hari_tunggakan >= 0 THEN 'Lancar'
        WHEN hari_tunggakan > -15 THEN 'Dalam Perhatian Khusus'
        WHEN hari_tunggakan > -30 THEN 'Kurang Lancar'
        WHEN hari_tunggakan > -45 THEN 'Diragukan'
        ELSE 'Macet'
    END as keterangan_kolektibilitas
FROM 
    TunggakanInfo;


----------------
cara kedua mudah

SELECT 
    a.rekening,
    c.nama,
    b.tgl,
    b.barang,
    b.jaminan,
    b.jenisbarang,
    (a.plafond - a.pokok) AS bakidebet 
FROM 
    angsuran a 
    INNER JOIN pinjaman b 
        ON a.rekening = b.rekening 
        AND b.kode = '101'
    INNER JOIN registrasi c 
        ON b.register = c.id 
WHERE 
    a.kode = '101'
    AND a.tgl <= '2025-01-20'
    AND (a.plafond - a.pokok) <> 0;