2015-04-22 16 views
6

używam MS SQL i udało mi się utworzyć kwerendę, która wybiera top 100 wierszy i losowo je jak tegoJak zwrócić 100 pierwszych wierszy według wartości kolumny, a następnie wybrać losowo pierwsze 100 wierszy?

SELECT TOP 100 * FROM Inlagg ORDER BY NEWID() 

udało mi również utworzyć kwerendę zwracającą 100 najlepszych wierszy według do kolumny lubi jak ten

SELECT TOP 100 * FROM Inlagg ORDER BY Likes DESC 

moje pytanie jest teraz, w jaki sposób można kierować theese 100 najlepszych wierszy przez sympatie i następnie losowo theese 100 najlepszych wartości?

Każda pomoc lub wejście bardzo doceniane, dzięki!

Odpowiedz

9

Można użyć czegoś podobnego

SELECT * 
FROM (SELECT TOP 100 * FROM Inlagg ORDER BY Likes DESC) as T 
ORDER BY NEWID() 

lub (dla tych, którzy woli typowych wyrażeń tabela nie Podzapytania)

WITH CTE_TOP as (SELECT TOP 100 * FROM Inlagg ORDER BY Likes DESC) 
SELECT * FROM CTE_TOP ORDER BY NEWID(); 
1

może być to również działa

select * 
    from Inlagg t1 
    inner join 
    (
     select distinct top 100 Likes 
     from Inlagg 
     order by Likes 
    ) t2 
     on t1.Inlaggid = t2.Inlaggid 

facetów Przykro mi to mówić, że nie mogę wysłać komentarzy może być java Api nie obsługuje mojej przeglądarki .Dlaczego się to nie uda, da 100 najlepszych rekordów na podstawie zamówienia przez połączenie. Do problemu z wydajnością może być ta kolumna tabeli będzie zawierała indeks klastrowy lub nieklastrowy. Mogą zostać zmniejszone wyszukiwania i powiedziałam, że jest to kolejna sposób nie jest dokładnym rozwiązaniem

+0

W przypadku tego pytania (tylko 100 wierszy), nie będzie można powiedzieć. Ale to spowoduje spadek katastrofalnej wydajności, gdy zwiększysz liczbę zapytań o rzędy. Sprawdź inne odpowiedzi na poprawną i najbardziej standardową metodę, aby to osiągnąć. –

+0

@JohnnyBell ciekawy komentarz po przeczytaniu złej odpowiedzi. –

+1

Nawet jeśli nie przyniosło oczekiwanego rezultatu, używanie takich sprzężeń spowoduje problemy z wydajnością, niezależnie od mojej odpowiedzi. –

Powiązane problemy