2013-01-15 81 views
1

我有一個表與一些搜索結果。搜索結果可能會重複,因爲每個結果都可能使用不同的度量標準找到。然後我想查詢這個表,只使用ID列選擇不同的結果。所以總結一下,我有一個帶有ID列的表,但ID可能會重複,並且我想僅使用MS Access SQL選擇每個ID中的一個,我該如何去做這件事?訪問選擇不同的某一列

好吧,我嘗試了幾個建議後有更多的信息。分鐘和Maxes將無法工作,因爲他們正在操作的列無法顯示。我得到一個錯誤,如You tried to execute a query that does not include the specified expression...我現在有我的所有數據進行排序,這裏是什麼樣子

ID|Description|searchScore 
97  test  1 
97  test  .95 
120 ball  .94 
97  test  .8 
120 ball  .7 

不同所以問題是,由於各行使用不同的搜索條件投入表我已經重複的行分數。我想要做的只是選擇每個ID中的一個,按searchScore降序排序。有任何想法嗎?

+0

'SELECT DISTINCT ID FROM tbl_MyTable'不這項工作? –

回答

2
SELECT DISTINCT ID 
FROM Search_Table; 

根據對問題的最新更新,以下查詢看起來很合適。

SELECT ID, [Description], Max(searchScore) 
FROM Search_Table 
GROUP BY ID, [Description]; 

但是,這幾乎與戈登昨天的建議相同,所以我不確定這是否是你想要的。

+0

謝謝,但不幸的是,這不起作用,因爲我也需要選擇搜索條件列,這些都是區分不同的ID。我需要搜索條件,以便我可以對其進行排序。 – DasPete

+0

不用擔心!謝謝您的幫助!我想我最終會採用這方面的東西。我將不得不考慮如何首先對結果進行排序。 – DasPete

+0

謝謝!這讓我更加接近。有了這個查詢,我只能得到每個ID的一個命中,問題是他們不再被'searchScore DESC'按照我如何添加它的任何想法排序?感謝您的幫助,我不太擅長SQL – DasPete

1

這裏有一個方法,你可以得到的搜索條件之一:

select id, min(search_criteria) 
from t 
group by id 

這將始終按字母順序返回第一個。您也可以使用max()輕鬆獲得最後一個。

您還可以使用:

select id, first(search_criteria) 
from t 
group by id 
+0

謝謝!我認爲這可能是關鍵,但你爲我打開了一個全新的蠕蟲罐。我只是意識到,我甚至在考慮選擇不同的條目之前,必須根據不同的標準進行相當多的排序。但謝謝大家的幫助! – DasPete

+0

得到我的排序想通了,並試了一下,看到我上面的編輯。 – DasPete