選擇唯一的記錄。當我執行 「SELECT * FROM表」 我得到的結果如下圖所示:如何通過SQL
1 item1 data1
2 item1 data2
3 item2 data3
4 item3 data4
正如你所看到的,也有來自COLUMN2 DUP記錄(ITEM1的dupped)。那麼我怎樣才能得到這樣的結果:
1 item1 data1
2 item2 data3
3 item3 data4
只有一個記錄是從副本,連同其餘的唯一記錄返回。
選擇唯一的記錄。當我執行 「SELECT * FROM表」 我得到的結果如下圖所示:如何通過SQL
1 item1 data1
2 item1 data2
3 item2 data3
4 item3 data4
正如你所看到的,也有來自COLUMN2 DUP記錄(ITEM1的dupped)。那麼我怎樣才能得到這樣的結果:
1 item1 data1
2 item2 data3
3 item3 data4
只有一個記錄是從副本,連同其餘的唯一記錄返回。
您可以使用SELECT DISTINCT
或GROUP BY
來做到這一點。如果你想使用一些聚合函數像COUNT()
或SUM()
SELECT a, b, count(*)
FROM table_c
GROUP BY a, b
SELECT a, b, sum(d)
FROM table_c
GROUP BY a, b
如果您只需要刪除重複再使用DISTINCT
SELECT DISTINCT a, c
FROM table_c
或
SELECT a, b
FROM table_c
GROUP BY a, b
GROUP BY
會更有幫助。 GROUP BY
應該用來聚集操作符適用於每個組
這要看rown要返回每一個獨特的項目。您的數據似乎表明在這種情況下SQL Server的最小數據值。
SELECT item, min(data)
FROM table
GROUP BY item
我發現如果因爲任何原因無法使用DISTINCT,那麼GROUP BY將會起作用。
爲了讓所有在你的結果,你需要放置的東西作爲列:
SELECT distinct a, Table.* FROM Table
它將把一個爲第一列,其餘的將是所有列在同一順序你的定義。這是,將重複列a。
你確定嗎?我在w3schools上試過這個,它返回的結果與SELECT *相同,除了第一列是 – Freakishly 2015-07-01 21:31:52
@Freakishly是的,這正是它在我的答案中所說的:/ – htafoya 2015-07-17 00:36:24
這是行不通的,你不能選擇*之後的獨特之處(你會得到一個1064錯誤 - 在你的SQL語法錯誤) – 2017-05-31 08:47:48
選擇Eff_st 從 ( 選擇EFF_ST,ROW_NUMBER()以上(PARTITION BY eff_st)XYZ - 從ABC.CODE_DIM
) 其中XYZ = 1 爲了通過EFF_ST取第一行5只
只是使用內部連接,因爲group by將不會與多列表示不包含在聚合函數中。
SELECT a.*
FROM yourtable a
INNER JOIN
(SELECT yourcolumn,
MIN(id) as id
FROM yourtable
GROUP BY yourcolumn
) AS b
ON a.yourcolumn= b.yourcolumn
AND a.id = b.id;
這是一個不同問題的答案,可能是一個應該用[tag:greatest-n-per-group]標記的標籤。 – 2018-01-03 08:28:42
難道是答案其實是錯的嗎? DISTINCT應用於所有選定的列(至少在DB2上),該列仍將在單個列中返回重複值。 – Konstantin 2018-01-04 10:46:53