簡體   English   中英

SQL:只選擇一行具有相同值的表

[英]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查詢:

    SELECT * FROM test.test1  WHERE id IN (
  SELECT MAX(id) FROM test.test1 GROUP BY email
);

您的示例數據集 查詢結果

希望這能解決您的問題。 謝謝。

在 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;

您可以使用以下查詢來獲取每emailMAX 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM