Rumah > Soal Jawab > teks badan
P粉2524239062023-08-11 12:45:29
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":
SELECT * FROM ( SELECT h.`Incident Number` AS Incident_Number , h.`Status` AS STATUS , h.`Priority` AS Priority , h.`Assigned Group` AS Assigned_Group , h.`Assignee` AS Assignee , h.`Submit Date` AS Submit_Date , h.`Last Modified Date` AS Last_Modified_Date , h.`Description` AS Description , h.`Submitter` AS Submitter , w.`Worklog Description` AS Worklog_Description , w.`Work Log ID` AS Work_Log_ID , row_number() over(partition by h.`Incident Number` order by w.worklog_entry_date DESC) as rn FROM `HPD: HELP Desk` h INNER JOIN `HPD: Search - Worklog` w ON w.`InstanceId` = h.`InstanceId` WHERE h.`Status` IN ('Assigned', 'Pending', 'In Progress') AND h.`Submit Date` >= $_ _from / 1000 AND h.`Submit Date` <= $_ _to / 1000 ) d WHERE d.rn = 1 ORDER BY d.`Submit Date` ASC LIMIT 20
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.