измените аннотацию вашего DAO с помощью @Repository
@Repository
public class ProfileDao {
.
.
.
}
, а затем сделайте свой метод обслуживания @Transactional, например, следующим образом
@Transactional
public List<Retailer> getRetailerByRetailerNumber(String retailerNo) {}
использовать Perl / Tk
читается и (теоретически) хорошо оптимизируется механизмом SQL Server. Правка: эта статья - хороший учебник по ранжированию, но в примерах используется RANK
вместо ROW_NUMBER
(или другая функция ранжирования, DENSE_RANK
) - различие имеет значение, когда есть «связи» между сгруппированными строками в одном разделе в соответствии с критериями упорядочения. этот пост хорошо объясняет разницу.
select distinct * from table t1
where EmailAddress =
(select max(EmailAddress) from table t2
where t1.userId = t2.userId)
select distinct
*
from
SomeTable a
inner join (
select max(emailAddress), userId
from
SomeTable
group by
userId
) b on a.emailAddress = b.emailAddress and a.userId = b.userId
Думаю, у меня есть решение, отличное от уже предложенных:
select * from foo where id = ( select id from foo F where F.bar = foo.bar order by F.baz limit 1 )
Это дает вам все записи foo, которые имеют лучший базовый уровень по сравнению с другими foo с той же полосой.