【问题标题】:How to get distinct record from mysql table?如何从mysql表中获取不同的记录?
【发布时间】:2011-08-31 20:56:14
【问题描述】:

我有一张学生这样的桌子

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

我想获取所有记录,但邮政编码不应重复。因此,如果是上表记录,则应获取记录 1 和 2。不会提取第 3 条记录,因为它的邮政编码已经在第 1 条记录中

【问题讨论】:

  • “我要获取所有记录”与“不能获取记录号 3”冲突。您想要所有记录还是一组唯一的 zip,其中第一条记录具有该值?

标签: mysql distinct


【解决方案1】:
SELECT DISTINCT fieldName FROM tableName;

以下查询将仅选择不同的“zip”字段。

SELECT DISTINCT zip FROM student;

SELECT * FROM tableName GROUP BY fieldName;

以下查询将选择所有字段以及不同的 zip 字段。

SELECT * FROM student GROUP BY zip;

【讨论】:

  • SELECT DISTINCT zip FROM tableName;SELECT DISTINCT FROM tableName; 有什么区别这两个结果可能不同???
  • 字段名称应在 DISTINCT 之后提供。之前打错字了。
  • SELECT DISTINCT FROM tableName;将给出 SQL 语法错误。 SELECT DISTINCT fieldName FROM tableName;是正确的。
  • 这个查询将如何显示 records 在我上面。更重要的是它如何获得 5 票。
【解决方案2】:

试试

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

  SELECT * FROM student GROUP BY zip;

【讨论】:

  • SELECT DISTINCT(zip),id,name FROM student;不管用。如果 id 或 name 是唯一的,它将显示重复的 zip。
  • SELECT DISTINCT(zip),id,name FROM student;有什么解决办法吗??所以它可以出现ID
【解决方案3】:

尽管在 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

【讨论】:

    【解决方案4】:

    因为大概其他列是一些有趣的......

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

    (或者你可以使用max-concat trick

    更新

    Oracle 现在已经从链接页面中删除了 max concat 技巧 - 但它是 described 其他地方 on internet

    【讨论】:

    • yourTable y后面少了一个逗号
    【解决方案5】:

    尝试使用

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

    【讨论】:

      【解决方案6】:

      如果我像下面这样使用有什么问题吗?

      select distinct zip,name,id from student;
      

      【讨论】:

        【解决方案7】:
        select id, name, distinct(zip) from student;
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2010-09-21
          • 2015-02-15
          • 2017-06-27
          • 1970-01-01
          • 2016-12-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多