Выберите одну строку каждого кода - PullRequest
0 голосов
/ 27 июня 2011

У меня есть таблица, в которой хранятся сообщения как это: codMsg, сообщение, другой код

1, 'hi', 1
2, 'hello', 1
3, 'wasup', 1
4, 'yo', 2
5, 'yeah', 2
6, 'gogogo', 3

Мне было интересно, если возможно выбрать топ 1 друг другаCod

Что я ожидаю:

1, 'hi', 1
4, 'yo', 2
6, 'gogogo', 3

Мне нужна вся строка, а не только номер другого кода, поэтому сгруппировать по не должно

Ответы [ 3 ]

1 голос
/ 27 июня 2011

SQL Server 2005+, Oracle:

SELECT codMsg, 
       message, 
       anotherCod
FROM
(
    SELECT codMsg, 
           message, 
           anotherCod,  
           RANK() OVER (PARTITION BY anotherCod ORDER BY codMsg ASC) AS Rank
    FROM mytable
) tmp
WHERE Rank = 1
1 голос
/ 27 июня 2011
select mytable.*
from mytable
join (select min(codMsg) as codMsg, anotherCod from mytable group by 2) x    
    on mytable.codMsg = x.codMsg
0 голосов
/ 27 июня 2011
SELECT
  *
FROM
  myTable
WHERE
  codMSG = (SELECT MIN(codMsg) FROM myTable AS lookup WHERE anotherCod = myTable.anotherCod)
...