2017-09-05 135 views
1
Select 
    * 
from [myTable] 
WHERE [myTable].ID IN 
(
    Select 
     Min([myTable].ID), 
     [myTable].Username 
FROM [myTable] 
group by [myTable].Username); 

刪除重複的記錄給我的錯誤:我不知道它爲什麼給這個錯誤。在主鍵

You have written a subquery that can return more than one field without using EXISTS reserved word in the main query's FROM clause. Revise the Select statement of the subquery to request only one field

我用戶名重複的記錄,所以我想用的ID號MIN作爲第一個記錄用戶名是爲了消除他們正確。有人可以幫助或告訴我在哪裏看?

+------+-------+-------+---------+--------------+ 
| Data | id | Fname | Lname | Status  | 
+------+-------+-------+---------+--------------+ 
| 1 | 12345 | Kunal | Kumar | completed | 
| 2 | 12345 | Kunal | Kumar | Not Started | 
| 3 | 12346 | Rahul | Malviya | Completed | 
| 4 | 12346 | Rahul | Malviya | Not Started | 
+------+-------+-------+---------+--------------+ 
+0

向我們展示db模式,樣本數據,當前和預期輸出。 \t請閱讀[**如何提問**](http://stackoverflow.com/help/how-to-ask) \t \t這裏是一個偉大的地方[** START **] (http://spaghettidba.com/2015/04/24/how-to-post-at-sql-question-on-a-public-forum/)來了解如何提高您的問題質量並獲得更好的答案。 \t [**如何創建一個最小,完整和可驗證的示例**](http://stackoverflow.com/help/mcve) –

+0

仍然需要預期的輸出 –

+0

謝謝,它的工作。我猜在內部查詢我們不應該使用用戶名列,刪除後,查詢工作正常。謝謝胡安 –

回答

1

問題是你嘗試用touple {Username, ID}

而是使用外值作爲過濾器內部查詢比較ID。

SELECT * 
FROM [myTable] T1 
WHERE T1.ID = 
    (SELECT Min(T2.ID) 
     FROM [myTable] T2 
     WHERE T2.Username = T1.Username); 
+0

謝謝胡安,我只有單表。 –

+0

這是一個問題或我的答案解決您的問題? –

+0

我正在使用Access從主鍵刪除重複項。我只有一個名爲T1的表。我看到你在兩張桌子上進行了連接。我只有T1,所以我應該如何執行子查詢? –

0

試試這個:

Select 
    * 
from [myTable] 
WHERE [myTable].ID IN 
(
    Select 
     Min([myTable].ID) 
FROM [myTable] 
group by [myTable].Username); 

我不知道很多關於MS的訪問,但它需要一個列被選中,然後才能在GROUP BY使用它?

+0

非常感謝Corid,它確實運行良好,我非常感謝你。乾杯! –

相關問題