Получить уникальные результаты в запросе - PullRequest
1 голос
/ 29 апреля 2010

Я уверен, что это будет довольно просто для гуру t-sql.

У меня есть следующий результат из таблицы

idMain  IdSecondary  TextValue
1       1            text1
1       2            text2
2       5            text3
2       6            text5

И я хочу получить только первое появление idMain.

Результат должен быть таким.

idMain  idSecondary  TextValue
1       1            text1
2       5            text3

Как мне этого добиться?

Ответы [ 2 ]

0 голосов
/ 29 апреля 2010

зависит от того, что вы подразумеваете под " first ". Обычно это слово подразумевает порядок даты или времени, но в вашей таблице нет поля даты или даты / времени ...

Таким образом, вы должны уточнить, что вы подразумеваете под "первым"

Если вы не сохранили в таблице какое-либо значение, которое может указать обработчику запросов, как упорядочить любые две записи, чтобы различать то, что вы подразумеваете под «первой», от другой, то вам не повезло. ...

при условии, что у вас действительно есть такое поле (скажем, это IdSecondary для примера - поскольку ваши выборочные результаты выглядят так), то вам нужно

Select * From Table a
Where IdSecondary= (Select Min(IdSecondary)
                   From Table
                   Where idMain = a.idMain)
0 голосов
/ 29 апреля 2010

Вы должны иметь возможность присоединиться с подзапросом, как в следующем примере. Это предполагает, что под «первым» вы подразумеваете самое низкое idSecondary:

SELECT t.idMain, sub_t.minSecondary, t.textValue
FROM   your_table t
JOIN   (SELECT   idMain, MIN(idSecondary) minSecondary
        FROM     your_table
        GROUP BY idMain) sub_t ON (sub_t.idMain = t.idMain);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...