Хотите данные из таблицы в SQL-сервере - PullRequest
0 голосов
/ 15 января 2010

У меня есть такие данные таблицы


id id1  name
1  1    test1
1  1    test1
1  2    test2
2  1    test1
2  2    test2
3  1    test1
3  2    test2
3  2    test2

Теперь из таблицы я хочу данные, как показано ниже лайк для id = 1 порядок по id1 asc первое имя = test1 так что я хочу первые два ряда

id id1  name
1  1    test1
1  1    test1

не третий ряд

Для id = 2 упорядочить по id1 asc имя = test1 поэтому я хочу, чтобы первая строка, так как test1 имеет только один для id = 2

id id1  name
2  1    test1

И для id = 3 то же самое, что и id = 2

Подскажите, пожалуйста, как можно получить значение perticlur для идентификатора, потому что сценарий отличается для идентификатора = 1

Ответы [ 4 ]

1 голос
/ 15 января 2010

Используйте RANK() или DENSE_RANK() для получения первых ранжированных строк, включая дубликаты, для каждого идентификатора.

select * from (
    select *, dense_rank() over (partition by [id] order by [id2]) as ranking
    from [table]
) as t
where ranking = 1
0 голосов
/ 15 января 2010

Возможно, это:

select * from [table] where id = 1 order by id1

Я думаю, дело в том, что вы можете использовать один столбец в предложении where и другой столбец в предложении order by. это не проблема.

Но я не уверен, что на самом деле вы могли бы описать таблицу данных, которую вы описываете, потому что первые две строки идентичны (как SQL может отличить их друг от друга? Или, технически, было бы нарушение первичного ключа)?

0 голосов
/ 15 января 2010
select * from [table] where id = 1 and name like "test1" order by id1
0 голосов
/ 15 января 2010

Звучит так, будто вы просто хотите select * from [tablename] where id1 = 1, но я могу ошибаться. Я нахожу вопрос немного, ну, расплывчатым ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...