[英]SQL: Select only one row of table with same value
我對 sql 有點陌生,對於我的項目,我需要做一些數據庫排序和過濾:
假設我的數據庫如下所示:
==========================================
| id | email | name
==========================================
| 1 | 123@test.com | John
| 2 | 234@test.com | Peter
| 3 | 234@test.com | Steward
| 4 | 123@test.com | Ethan
| 5 | 542@test.com | Bob
| 6 | 123@test.com | Patrick
==========================================
我該怎么做才能只返回具有相同電子郵件的最后一列 te 返回:
==========================================
| id | email | name
==========================================
| 3 | 234@test.com | Steward
| 5 | 542@test.com | Bob
| 6 | 123@test.com | Patrick
==========================================
提前致謝!
在 SQL 中執行此操作的通用方法是使用 ANSI 標准row_number()
函數:
select t.*
from (select t.*, row_number() over (partition by email order by id desc) as seqnum
from t
) t
where seqnum = 1;
這是一個更清晰的方法:
SELECT *
FROM table
ORDER BY email DESC
LIMIT 1;
您可以使用以下查詢來獲取每email
的MAX
id
值:
SELECT email, MAX(id)
FROM mytable
GROUP BY email
使用上面的查詢作為派生表,您可以獲得整個記錄:
SELECT t1.*
FROM mytable AS t1
JOIN (
SELECT email, MAX(id) AS id
FROM mytable
GROUP BY email
) AS t2 ON t1.id = t2.id
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.