Alih keluar baris pendua dan simpan hanya entri log kerja terkini
P粉916760429
2023-08-10 17:25:56
<p>Saya mencipta pertanyaan ini dan ia berfungsi. Masalahnya ialah ia menunjukkan baris untuk setiap log kerja. Saya hanya memerlukan log kerja terkini untuk setiap acara. </p>
<pre class="brush:php;toolbar:false;">SELECT DISTINCT
`HPD:Meja Bantuan`.`Nombor Insiden` AS Insiden_Nombor,
`HPD:Help Desk`.`Status` AS Status,
`HPD:Meja Bantuan`.`Keutamaan` SEBAGAI Keutamaan,
`HPD:Help Desk`.`Assigned Group` AS Assigned_Group,
`HPD:Meja Bantuan`.`Pemegang Tugas` SEBAGAI Penerima,
`HPD:Meja Bantuan`.`Tarikh Serah` AS Tarikh_Serah,
`HPD:Help Desk`.`Tarikh Terakhir Diubahsuai` AS Last_Modified_Date,
`HPD:Meja Bantuan`.`Penerangan` SEBAGAI Penerangan,
`HPD:Meja Bantuan`.`Penyerah` SEBAGAI Penyerah,
`HPD:Search-Worklog`.`Worklog Description` AS Worklog_Description,
`HPD:Search-Worklog`.`ID Log Kerja` AS Work_Log_ID
DARI
`HPD:Meja Bantuan`
SERTAI DALAM `HPD:Search-Worklog` dihidupkan (`HPD:Search-Worklog`.`InstanceId` = `HPD:Help Desk`.`InstanceId`)
DI MANA
(`HPD:Meja Bantuan`.`Status` dalam ('Ditugaskan', 'Belum selesai', 'Sedang Berlangsung')
Dan `HPD:Meja Bantuan`.`Tarikh Serah` >= $__dari/1000 dan `HPD:Meja Bantuan`.`Tarikh Serah` <= $__kepada/1000)
PERINTAH OLEH
`HPD:Meja Bantuan`.`Tarikh Serah` ASC
HAD 20</pra>
<p>Saya telah mencuba borang HPD:Help Desk, HPD:Worklog dan HPD:Search-Worklog. Saya juga cuba menggunakan pernyataan CASE untuk hanya memaparkan ID log kerja terkini/maksimum untuk setiap acara, tanpa kejayaan. Saya pasti saya kehilangan sesuatu yang jelas/mudah. </p>
Dengan mengandaikan anda menggunakan versi terbaru MySQL (atau varian daripadanya) yang menyokong fungsi tetingkap, cara yang sangat berkesan untuk mendapatkan "terkini" adalah dengan menggunakan
row_number() over()
。在over子句中使用partition by
来控制什么会触发行编号重置,并使用order by
来控制分区中获得行号1的行。现在,要获取“最新”的需要在worklog表中有一列来实现这个功能 - 我假设有一个时间戳列(worklog_entry_date
存在于该表中(worklog_entry_date
) di mana anda perlu menggantikan lajur yang sebenarnya menentukan "terbaru"). Sarang pertanyaan semasa satu tahap supaya anda boleh menapis untuk baris nombor 1 - ini akan menjadi baris "terkini":Nota: Anda tidak perlu menggunakan
select distinct
apabila penomboran baris hadir - cuba elakkan menggunakannya secara umum. Juga, gunakan alias jadual sendiri untuk memudahkan kod anda.