2013-05-29 7 views
3

У меня есть таблица SQL следующим образомвыбор конкретных записей из таблицы

Desc code1 code2 type1 type2 
-------------------------------------  
desc1 123  234  T  M 
desc2 444  421  T  M 
desc3 491  212  T 
desc4 322  211  T 
desc5 333  312  T 

Теперь я должен выбрать первые две записи каждый раз, и один из оставшихся трех записей на основе некоторых условий, то как выбрать только три записи из этого стол первый, второй и один из оставшихся трех ... пожалуйста, помогите

+0

решена ли проблема? обновить то же самое – vikas

ответ

8
SELECT TOP 2 * FROM table ORDER BY (something) 
UNION ALL 
SELECT TOP 1 * FROM table WHERE (something) (maybe ORDER BY something) 

ИЛИ если топ-2 вы имеете в виду записи, где типа2 = M, то:

SELECT TOP 2 * FROM table WHERE type2='M' 
UNION ALL 
SELECT TOP 1 * FROM table WHERE (something) 

ИЛИ если вы хотите верхнюю 2 и случайную треть, то

SELECT TOP 2 * FROM table WHERE type2='M' 
UNION ALL 
SELECT TOP 1 * FROM table WHERE type2<>'M' ORDER BY NEWID() 
0
 

    SELECT TOP (2)* FROM TOPP 
    UNION 
    SELECT TOP(1) * FROM TOPP A 
    WHERE A.DESC NOT IN (SELECT TOP((SELECT COUNT(*) FROM TOPP)-3) DESC FROM TOPP) 

TableName = Topp

Смежные вопросы