удалить строки, которые не имеют мин (избавиться) - PullRequest
0 голосов
/ 15 декабря 2010
select min(q.rid)
    from qvalues q
        inner join batchinfo b
            on q.rowid = b.rowid
                and b.instrument = 'tf1'
    group by q.rowid, q.name, q.compound
    having count(*) > 1
  1. вместо выбора min (рид), как мне удалить все, кроме min (рид)?
  2. как мне удалить все, кроме max (rid)?

обратите внимание, что я хочу удалить только те значения, которые имеют одинаковые rowid, name и составной

1 Ответ

0 голосов
/ 15 декабря 2010
begin transaction

delete from [table]
where rid != 
(select min(q.rid)
from qvalues q
    inner join batchinfo b
        on q.rowid = b.rowid
            and b.instrument = 'tf1'
group by q.rowid, q.name, q.compound
having count(*) > 1)
and rowid != 
(select q.rowid
from qvalues q
    inner join batchinfo b
        on q.rowid = b.rowid
            and b.instrument = 'tf1'
group by q.rowid, q.name, q.compound
having count(*) > 1)
and name != 
(select q.name
from qvalues q
    inner join batchinfo b
        on q.rowid = b.rowid
            and b.instrument = 'tf1'
group by q.rowid, q.name, q.compound
having count(*) > 1)
and compound != 
(select q.compound
from qvalues q
    inner join batchinfo b
        on q.rowid = b.rowid
            and b.instrument = 'tf1'
group by q.rowid, q.name, q.compound
having count(*) > 1)

чтобы удалить все, кроме max, вы делаете то же самое с синтаксисом max

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...