Удалите групповые идентификационные строки

Рекурсивная функция с использованием методов children() и each()

function getHierarchy($ul, level = '') {

  $ul.children('li').each(function(i, li) {
    let text = $(li).children('a').text();
    let list = $(li).children('ul');
    (list.length) 
      ? getHierarchy(list, level + text + '/')
      : console.log(level + text)
  });
  
}

getHierarchy($('#1'))
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<ul id="1">
  <li><a href="#">First</a></li>
  <li><a href="#">Second</a>
    <ul id="2">
      <li><a href="#">Second - 1</a></li>
      <li><a href="#">Second - 2</a></li>
      <li><a href="#">Second - 3</a>
        <ul id="3">
          <li><a href="#">Aaa</a></li>
          <li><a href="#">Bbb</a></li>
          <li><a href="#">Ccc</a></li>
        </ul>
      </li>
    </ul>
  </li>
  <li><a href="#">Third</a></li>
</ul>

5
задан DJ. 3 March 2009 в 23:45
поделиться

2 ответа

DELETE FROM myTable AS t1 
WHERE EXISTS (
    SELECT 1 FROM myTable AS t2 
    WHERE t1.ID=t2.ID AND t1.DateCreated<t2.DateCreated)

т.е., удалите любую строку, где существует другая строка с тем же идентификатором и более поздней датой создания.

10
ответ дан 13 December 2019 в 22:17
поделиться
create table #t ( id int, date datetime )

insert #t 
values(1, getdate())

insert #t 
values(1, getdate()+1)

insert #t 
values(1, getdate()-1)

insert #t 
values(2, getdate())

insert #t 
values(2, getdate()+1)

delete t 
from #t t
left join (select id, min(date) as date from #t group by id) as t1 
    on t.id = t1.id and t1.date = t.date
where t1.date is null
0
ответ дан 13 December 2019 в 22:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: