I try to delete unnecessary time because I just need min()
and max()
data, from selected id. And also read same problem through Stack Overflow:
- SQL select only rows with max value on a column
- Finding Max and Min Times
- Delete all records except the most recent one?
But many command using select. Because delete except min() and max() data by id.
Here is my query:
DELETE FROM table1
WHERE ID_karyawan IN (1, 3, 4, 5, 6, 7) -- List all the IDs you want to filter here
AND jam NOT IN (SELECT MIN(jam)
FROM table1
WHERE ID_karyawan IN (1, 3, 4, 5, 6, 7) -- Repeat the list of IDs here
UNION
SELECT MAX(jam)
FROM table1
WHERE ID_karyawan IN (1, 3, 4, 5, 6, 7) -- Repeat the list of IDs here
);
SELECT
table1.ID_karyawan, table1.nama_karyawan,
table1.jam, table1.tanggal, table1.arah
FROM
table1
GROUP BY
ID_karyawan, nama_karyawan, jam, tanggal, arah
This is my table (table1) :
ID karyawan nama karyawan jam tanggal arah
-------------------------------------------------------------
1 ridho azhar megantara 07:44:45 2023-07-20 masuk
1 ridho azhar megantara 17:04:46 2023-07-20 keluar
3 Hendy Arief Yuwono 17:24:47 2023-07-20 keluar
3 Hendy Arief Yuwono 06:58:41 2023-07-20 masuk
3 Hendy Arief Yuwono 17:24:41 2023-07-20 keluar
4 Ety wulandari 07:51:48 2023-07-20 masuk
4 Ety wulandari 17:04:07 2023-07-20 keluar
5 Joseph Tan 17:03:48 2023-07-20 keluar
5 Joseph Tan 07:40:31 2023-07-20 masuk
6 Herry Joko Susilo 17:04:16 2023-07-20 keluar
6 Herry Joko Susilo 07:26:11 2023-07-20 masuk
6 Herry Joko Susilo 07:26:16 2023-07-20 masuk
7 Martha Ayu Wulandari 07:49:53 2023-07-20 masuk
7 Martha Ayu Wulandari 07:50:23 2023-07-20 masuk
7 Martha Ayu Wulandari 17:04:43 2023-07-20 keluar
into this:
ID karyawan nama karyawan jam tanggal arah
-----------------------------------------------------------
1 ridho azhar megantara 07:44:45 2023-07-20 masuk
1 ridho azhar megantara 17:04:46 2023-07-20 keluar
3 Hendy Arief Yuwono 06:58:41 2023-07-20 masuk
3 Hendy Arief Yuwono 17:24:41 2023-07-20 keluar
4 Ety wulandari 07:51:48 2023-07-20 masuk
4 Ety wulandari 17:04:07 2023-07-20 keluar
5 Joseph Tan 17:03:48 2023-07-20 keluar
5 Joseph Tan 07:40:31 2023-07-20 masuk
6 Herry Joko Susilo 07:26:11 2023-07-20 masuk
6 Herry Joko Susilo 17:04:16 2023-07-20 keluar
7 Martha Ayu Wulandari 07:49:53 2023-07-20 masuk
7 Martha Ayu Wulandari 17:04:43 2023-07-20 keluar
But the fact the all selected id will delete permanently if execute the query for more than 1.
Like this:
3 Hendy Arief Yuwono 06:58:41 2023-07-20 00:00:00.000
3 Hendy Arief Yuwono 17:24:47 2023-07-20 00:00:00.000
8 Aries Krisnawan 07:49:06 2023-07-20 00:00:00.000
8 Aries Krisnawan 07:49:11 2023-07-20 00:00:00.000
8 Aries Krisnawan 17:04:30 2023-07-20 00:00:00.000
So all selected id disappear. Is my query wrong? Or do you have any suggestion for this?