удаление повторяющихся строки

minioracle
Дата: 08.02.2016 17:30:53
Доброе время суток.
есть таблица в не данные:

col1-col2-col3---col4
42--- S--- 57--- 30.01.2016 10:54:41
43--- S--- 60--- 30.01.2016 10:51:51
44--- S--- 65--- 30.01.2016 10:47:11
45--- S--- 68--- 30.01.2016 10:48:21
46--- S--- 72--- 30.01.2016 10:48:45
47--- S--- 75--- 30.01.2016 10:50:27
48--- S--- 78--- 30.01.2016 10:51:19
49--- S--- 83--- 30.01.2016 10:53:04
... ... ... .....
66--- S--- 72--- 30.01.2016 11:08:45
67--- S--- 65--- 30.01.2016 11:47:11
68--- S--- 68--- 30.01.2016 11:48:21
... ... ... .....
77--- S--- 91--- 31.01.2016 11:50:27
78--- S--- 92--- 31.01.2016 11:51:19
79--- S--- 93--- 31.01.2016 11:53:04
... ... ... .....

вот нужен sql запрос который позволит удалить 66,67,68 строчку, т.е. дублирующиеся, оставить только уникальные? В итоге должно быть:
col1-col2-col3---col4
42--- S--- 57--- 30.01.2016 10:54:41
43--- S--- 60--- 30.01.2016 10:51:51
44--- S--- 65--- 30.01.2016 10:47:11
45--- S--- 68--- 30.01.2016 10:48:21
46--- S--- 72--- 30.01.2016 10:48:45
47--- S--- 75--- 30.01.2016 10:50:27
48--- S--- 78--- 30.01.2016 10:51:19
49--- S--- 83--- 30.01.2016 10:53:04
Помогите реализовать такой Sql запрос.
Делаю такой запрос
DELETE a.* FROM tab1 a, (SELECT b.namess, b.dat, MIN(b.id) mid FROM tab1 b GROUP BY  b.namess, b.dat) c WHERE a.namess = c.namess AND a.dat=c.dat AND a.id>c.mid 

Выдает ошибку
Дополнительные сведения: Syntax error (missing operator) in query expression 'MIN(b.id) mid'.

Помогите разобраться Плиз!
minioracle
Дата: 08.02.2016 18:08:18
minioracle,

нашел ошибку в запросе
DELETE a.* FROM tab1 a, (SELECT b.namess, b.dat, min(b.id) as mid FROM tab1 b GROUP BY  b.namess, b.dat) c WHERE a.namess = c.namess AND a.dat=c.dat AND a.id>c.mid

Но теперь при выполнении выдает сообщение:
Дополнительные сведения: Could not delete from specified tables.
непоймучка
Дата: 08.02.2016 18:18:48
minioracle
Доброе время суток.
есть таблица в не данные:

col1-col2-col3---col4
42--- S--- 57--- 30.01.2016 10:54:41
43--- S--- 60--- 30.01.2016 10:51:51
44--- S--- 65--- 30.01.2016 10:47:11
45--- S--- 68--- 30.01.2016 10:48:21
46--- S--- 72--- 30.01.2016 10:48:45
47--- S--- 75--- 30.01.2016 10:50:27
48--- S--- 78--- 30.01.2016 10:51:19
49--- S--- 83--- 30.01.2016 10:53:04
... ... ... .....
66--- S--- 72--- 30.01.2016 11:08:45
67--- S--- 65--- 30.01.2016 11:47:11
68--- S--- 68--- 30.01.2016 11:48:21
... ... ... .....
77--- S--- 91--- 31.01.2016 11:50:27
78--- S--- 92--- 31.01.2016 11:51:19
79--- S--- 93--- 31.01.2016 11:53:04
... ... ... .....

вот нужен sql запрос который позволит удалить 66,67,68 строчку, т.е. дублирующиеся, оставить только уникальные? В итоге должно быть:
col1-col2-col3---col4
42--- S--- 57--- 30.01.2016 10:54:41
43--- S--- 60--- 30.01.2016 10:51:51
44--- S--- 65--- 30.01.2016 10:47:11
45--- S--- 68--- 30.01.2016 10:48:21
46--- S--- 72--- 30.01.2016 10:48:45
47--- S--- 75--- 30.01.2016 10:50:27
48--- S--- 78--- 30.01.2016 10:51:19
49--- S--- 83--- 30.01.2016 10:53:04
Помогите реализовать такой Sql запрос.
Делаю такой запрос
DELETE a.* FROM tab1 a, (SELECT b.namess, b.dat, MIN(b.id) mid FROM tab1 b GROUP BY  b.namess, b.dat) c WHERE a.namess = c.namess AND a.dat=c.dat AND a.id>c.mid 

Выдает ошибку
Дополнительные сведения: Syntax error (missing operator) in query expression 'MIN(b.id) mid'.

Помогите разобраться Плиз!

Syntax error состоит в том, что вы используете имя функции Mid в качестве псевдонима поля.
(кстати, объявление псевдонима поля без AS - это тоже ошибка)

Кроме того, тут налицо логическое несоответствие между назначением записей 66,67,68 повторяющимися
и использованным группирующим выражением - группировка b.dat НЕ даст вам повторений, ибо с учетом времени там все значения уникальные.

И наконец, даже если вы все это исправите данный запрос не будет обновляемым,
и удалить из него не получится. Вашу задачу можно решить удалением вида
DELETE * FROM tab1 WHERE id NOT IN
(SELECT MIN(id) FROM tab1 GROUP BY namess, Format(dat,'yyyymmdd'))