簡體   English   中英

如何從 mysql 表中獲取不同的記錄?

[英]How to get distinct record from mysql table?

我有一個這樣的表學生

id | name | zip 
1  | abc  | 1234
2  | xyz  | 4321
3  | asd  | 1234

我想獲取所有記錄,但不應重復 zip 代碼。 因此,如果是上表記錄,則應獲取記錄 1 和 2。 不會提取第 3 號記錄,因為它的 zip 代碼已經在第 1 號記錄中

SELECT DISTINCT fieldName FROM tableName;

以下查詢將僅 select 不同的“zip”字段。

SELECT DISTINCT zip FROM student;

SELECT * FROM tableName GROUP BY fieldName;

以下查詢將 select 所有字段以及不同的 zip 字段。

SELECT * FROM student GROUP BY zip;

嘗試

 SELECT DISTINCT(zip),id,name FROM student;

或者

  SELECT * FROM student GROUP BY zip;

盡管在 MySQL 中你可以逃脫:

SELECT *
FROM student
GROUP BY zip 

我會選:

SELECT * 
FROM student t
  JOIN 
    ( SELECT MIN(id) AS minid
      FROM student
      GROUP BY zip
    ) AS grp
    ON grp.minid = t.id

因為大概其他列有一些興趣....

 SELECT y.*
 FROM yourTable y,
 (SELECT MIN(y2.id)
  FROM yourTable y2
  GROUP BY y2.zip) ilv
 WHERE ilv.id=y.id;

(或者你可以使用max-concat 技巧

更新

Oracle 現在已從鏈接頁面中刪除了 max concat 技巧 - 但它在互聯網的其他地方有所描述

嘗試使用

Select Distinct(zip),id,name group by zip;

如果我像下面這樣使用有什么問題嗎?

select distinct zip,name,id from student;
select id, name, distinct(zip) from student;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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