Rajiv.net40 Ответов: 3

Я хочу, чтобы первые 5 имен пользователя были сверху, которые будут выбраны мной


у меня есть тест таблицы со столбцом usrName. таблица содержит 10 различных имен пользователей.
теперь я хочу получить все Имя пользователя но я хочу сначала 5 имя пользователя сверху которое будет выбрано мной и отдых после этого

Что я уже пробовал:

я хочу, чтобы первые 5 имен пользователя были сверху, которые будут выбраны мной

0x01AA

Вы можете добавить дополнительное поле, например Position, чтобы установить положение Display и отсортировать ваш запрос в соответствии с ним.

Rajiv.net40

можете ли вы привести какой-нибудь пример

0x01AA

Я добавил Решение №3. Надеюсь, это вам поможет.

OriginalGriff

Это не очень хороший вопрос - мы не можем понять из этого малого, что вы пытаетесь сделать.
Помните, что мы не можем видеть ваш экран, получить доступ к вашему жесткому диску или прочитать ваши мысли.
Так что же именно вы подразумеваете под "избранными мной "и"остальными"? Возможно, если вы поделитесь некоторыми образцами данных и объясните, как вы "выбрали" то, что должно быть в каком порядке, это может помочь?
Используйте виджет" улучшить вопрос", чтобы отредактировать свой вопрос и предоставить более подробную информацию.

koolprasadd

Что вы подразумеваете под "избранным мной"? если вы хотите первые 5, просто используйте для этого предложение TOP
Выберите Top (5) userid из таблицы 1

3 Ответов

Рейтинг:
28

0x01AA

Вы можете добавить дополнительный столбец, который содержит информацию TopUser или нет.

CREATE TABLE test
(
   UserName char(30),
   TopMemberPos integer default 1
)

Мы сами определяем, что "0"означает верхний член.

Тестовые данные:
INSERT INTO test (UserName, TopMemberPos) Values
('U1', '1'),
('U2', '0'),
('U3', '1'),
('U4', '0'),
('U5', '1'),
('U6', '0'),
('U7', '1'),
('U8', '0'),
('U9', '0');

Тестовый запрос:
SELECT UserName from test order by TopMemberPos, UserName;

Testresult:
UserName
--------
U2                            
U4                            
U6                            
U8                            
U9                            
U1                            
U3                            
U5                            
U7                            

Надеюсь, это поможет.


[Редактировать] Более интуитивная логика / имя / условности
CREATE TABLE test
(
   UserName char(30),
   TopMember integer default 0
)

Мы сами определяем, что "1"означает верхний член.

Тестовые данные:
INSERT INTO test (UserName, TopMember) Values
('U1', '0'),
('U2', '1'),
('U3', '0'),
('U4', '1'),
('U5', '0'),
('U6', '1'),
('U7', '0'),
('U8', '1'),
('U9', '1');

Тестовый запрос:
SELECT UserName from test order by TopMember DESC, UserName;

Testresult:то же самое, что и выше


Rajiv.net40

поблагодарить у очень многое......это право answar

0x01AA

Добро пожаловать

Rajiv.net40

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

0x01AA

Я догадывался, что такой вопрос придет :)

Как вы имеете в виду, что он показывает ложь сверху? Преобразуете ли вы целое число в логическое? Если да, то вы можете использовать ! Оператор...

Или вы действительно определяете '0' как не TopMember и '1' Как TopMember, но в этом случае вы должны адаптировать также "order by" в запросе.

Rajiv.net40

сэр, как я использую ! Оператор приведите мне пример

0x01AA

Для этого мне нужно посмотреть, что/как вы делаете в коде. Ты можешь мне это показать?

0x01AA

Но, может быть, проще и интуитивнее повернуть "логику вспять". Значит Топмембер будут помечены '1' и не топ с '0'. В этом случае не забудьте изменить значение по умолчанию в create table и я предлагаю переименовать TopMemberPos на TopMember. Если вы сделаете все это, ваш запрос должен быть изменен следующим образом::
Выберите имя пользователя из тестового заказа по Описание TopMemberPos , имя пользователя;

См. [Edit] в решении ;)

Rajiv.net40

hhhmmm...вот exelant.......спасибо

Animesh Datta

Мои 5!

0x01AA

Большое спасибо.

Рейтинг:
2

Karthik_Mahalingam

попробуйте использовать союз[^]

select usrName from mytable where usrName in ( 'user1','user2','user3','user4','user5')
union
select usrName from mytable where usrName not in ( 'user1','user2','user3','user4','user5')


Rajiv.net40

если у меня есть 1000 пользователей, то ?

Karthik_Mahalingam

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

Rajiv.net40

мне нужен набор для n пользователей

Karthik_Mahalingam

затем вам нужно будет передать пользователям разделенную запятыми строку и разбить ее на sql и использовать

Рейтинг:
1

Suvendu Shekhar Giri

Это можно сделать различными способами.
1.Вы можете добавить еще один столбец в таблицу, чтобы установить порядок сортировки, а для остальных вы можете установить большое нет. в качестве порядка сортировки, скажем, 99 для вашего случая.
2. Использование случая, когда в порядке-

SELECT UuserName,....
FROM YourTable
ORDER BY CASE WHEN UserName IN('user9','user3'..) THEN 1 ELSE 99 END


Есть много других подходов, чтобы сделать это тоже.

Надеюсь, это поможет :)