我有一张表格如下
INTERPRO GOTERM1 GOTERM2 CONFIDENCE
IPR123 1576 2345 1.000
IPR235 3459 4987 1.000
IPR356 9987 5567 1.000
IPR568 3345 3213 0.88
IPR342 7860 7654 0.88
现在我想要任何具有不同置信度值的记录,仅限于下面的
IPR123 1576 2345 1.000
IPR342 7860 7654 0.88
答案 0 :(得分:2)
使用Sql Server 2005+,您可以尝试类似
的内容;WITH Vals AS(
SELECT *,
ROW_NUMBER() OVER (PARTITION BY CONFIDENCE ORDER BY INTERPRO ) RowID
FROM YourTable
)
SELECT *
FROM Vals
WHERE RowID = 1
答案 1 :(得分:0)
SELECT t.INTERPRO, t.GOTERM1, t.GOTERM2, t.CONFIDENCE
FROM tbl t
WHERE t.INTERPRO = (SELECT MIN(t2.INTERPRO)
FROM tbl t2
WHERE t.CONFIDENCE = t2.CONFIDENCE)
修改强>
如果INTERPRO是非独特的,每个自信:
SELECT t2.INTERPRO, t2.GOTERM1, t2.GOTERM2, t1.CONFIDENCE
FROM (SELECT DISTINCT t3.CONFIDENCE FROM tbl t3) t1,
(SELECT TOP 1 t4.INTERPRO, t4.GOTERM1, t4.GOTERM2
FROM tbl t4
WHERE t4.CONFIDENCE = t1.CONFIDENCE) t2
应该可行,但我现在还没有方便的SQL Server实例来仔细检查。
答案 2 :(得分:-1)
如果 INTERPRO 是唯一的
SELECT * FROM TABLE WHERE INTERPRO in
(
SELECT MIN(INTERPRO) FROM TABLE
GROUP BY CONFIDENCE
)
你可以用你喜欢的任何东西替换MIN()