Рекурсивная функция с использованием методов 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>
DELETE FROM myTable AS t1
WHERE EXISTS (
SELECT 1 FROM myTable AS t2
WHERE t1.ID=t2.ID AND t1.DateCreated<t2.DateCreated)
т.е., удалите любую строку, где существует другая строка с тем же идентификатором и более поздней датой создания.
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