Вернуть дублированные строки по столбцу max - PullRequest
0 голосов
/ 19 марта 2019

Я пытаюсь дублировать все строки (заголовок) по максимальному initID.

Вот мой стол:

  ID |      title      | revision | initID
  1  |    Mytitle 1    |    0     |  10
  2  |    Mytitle 1    |    1     |  10
  3  |    Mytitle 1    |    2     |  10
  4  |    Mytitle 1    |    0     |  20
  5  |    Mytitle 1    |    1     |  20

  6  |    Mytitle 2    |    0     |  30
  7  |    Mytitle 2    |    1     |  30

  8  |    Mytitle 3    |    0     |  40
  9  |    Mytitle 3    |    1     |  40
  10 |    Mytitle 3    |    0     |  50
  11 |    Mytitle 3    |    1     |  50
  12 |    Mytitle 3    |    2     |  50

  13 |    Mytitle 4    |    0     |  60

Моя цель - проверить, есть ли несколько initID с одинаковым названием и получить повторяющиеся строки с МАКС (initid).

Например, я хочу получить возврат из моего запроса:

  4  |    Mytitle 1    |    0     |  20
  5  |    Mytitle 1    |    1     |  20
  10 |    Mytitle 3    |    0     |  50
  11 |    Mytitle 3    |    1     |  50
  12 |    Mytitle 3    |    2     |  50

Если для заголовка есть только один initID, я не хочу возвращать строки.

Ответы [ 2 ]

1 голос
/ 19 марта 2019

Вы можете использовать EXISTS с коррелированным подзапросом:

SELECT t.*
FROM table t
WHERE EXISTS (SELECT 1 FROM table t1 WHERE t.title = t1.title AND t1.initID <> t.initID) AND
      t.initID = (SELECT MAX(t1.initID) FROM table t1 WHERE t1.title  = t.title);
0 голосов
/ 19 марта 2019

использовать связанный подзапрос

 select t.* from table_name t
 where exists( select 1 from table_name t2 where t1.title=t2.title 
                   having count(*)>1)
 and t1.initID=( select max(initID) from table_name t2 where t1.title=t2.title)
...