MySQL 查询某个字段不重复的所有记录_Mysql

假设现在有如下N条记录 表明叫book
id author title
1 aaa AAA
2 bbb BBB
3 ccc CCC
4 ddd DDD
5 eee AAA
现在想从这5条记录中查询所有title不重复的记录
select distinct title,author from book这样是不可以的 因为distinct只能作用于一个字段
想请教应该怎么写
答案:

复制代码 代码如下:

select a.* from book a right join (
select max(id) id from book group by title) b on b.id = a.id
where a.id is not null

如果选第一条符合的记录,那么用min(id)就行了

复制代码 代码如下:

select a.* from book a right join (
select min(id) id from book group by title) b on b.id = a.id
where a.id is not null

时间: 2024-11-05 00:30:22

MySQL 查询某个字段不重复的所有记录_Mysql的相关文章

将MySQL查询结果按值排序的简要教程_Mysql

MySQL查询结果如何排序呢?这是很多人都提过的问题,下面就教您如何对MySQL查询结果按某值排序,如果您感兴趣的话,不妨一看. 之前有一个功能修改,要求MySQL查询结果中: id name * * * 1 lucy ... 3 lucy ... 2 lily ... 4 lucy ... 名字为lucy的优先排在前面,百思不得其解,可能有人会说简单 union嘛 或者弄个临时表什么的,其实我也想过,但是本身SQL逻辑就很多了(上面只是简例),再union的话或者临时表可能绕很大的弯路,后来看

mysql 查询第几行到第几行记录的语句_Mysql

1.查询第一行记录: select * from table limit 1 2.查询第n行到第m行记录 select * from table1 limit n-1,m-n; SELECT * FROM table LIMIT 5,10:返回第6行到第15行的记录 select * from employee limit 3,1; // 返回第4行 3.查询前n行记录 select * from table1 limit 0,n; 或 select * from table1 limit n;

MySQL获取所有分类的前N条记录_Mysql

比如有文章表 Article(Id,Category,InsertDate),现在要用SQL找出每种类型中时间最新的前N个数据组成的集合,一段不错的代码,留存备用 SELECT A1.* FROM Article AS A1 INNER JOIN (SELECT A.Category,A.InsertDate FROM Article AS A LEFT JOIN Article AS B ON A.Category = B.Category AND A.InsertDate <= B.Inse

mysql查询数据库中出重复次数最多的记录

 代码如下 复制代码 SELECT keyword, count( * ) AS count FROM article_keyword GROUP BY keyword ORDER BY count DESC LIMIT 20 此段查询语句返回 article_keyword 表中 keyword 重复次数(count) 最多的20条记录.  代码如下 复制代码 SELECT DISTINCT count( * ) AS count FROM article_keyword GROUP BY k

MYSQL SET类型字段的SQL操作知识介绍_Mysql

复制代码 代码如下: <em>`mark` set('index','best','hot')</em>  用的人少,懂的人也少,找了很久,总算凑齐了一套知识点看上面的结构,MYSQL不傻,会存index吗,不会,存的是数字SET字段是利用二进制数字来一一对应你设置的值,比如index,排在第0位,那么2的零次方等于1 复制代码 代码如下: update from table SET mark=1  复制代码 代码如下: update from table SET mark='in

分享MYSQL插入数据时忽略重复数据的方法_Mysql

使用下以两种方法时必须把字段设为"主键(PRIMARY KEY"或"唯一约束(UNIQUE)".1:使用REPLACE INTO (此种方法是利用替换的方法,有点似类于先删除再插入)  复制代码 代码如下: REPLACE INTO Syntax  REPLACE [LOW_PRIORITY | DELAYED]      [INTO] tbl_name [(col_name,...)]      {VALUES | VALUE} ({expr | DEFAULT}

mysql支持跨表delete删除多表记录_Mysql

前几天写了Mysql跨表更新的一篇总结,今天我们看下跨表删除. 在Mysql4.0之后,mysql开始支持跨表delete. Mysql可以在一个sql语句中同时删除多表记录,也可以根据多个表之间的关系来删除某一个表中的记录. 假定我们有两张表:Product表和ProductPrice表.前者存在Product的基本信息,后者存在Product的价格. 第一种跨表删除的方式是不用join,在delete时指定用半角逗号分隔多个表来删除,如下sql语句: 复制代码 代码如下: DELETE p.

关于mysql查询差值的方法

问题描述 关于mysql查询差值的方法 当前我有表test,字段id,click,share 我的需求是 算出同一id,click数最大的click和share,减去click第二大的click和share 解决方案 分析: 从题主描述的字段值猜测,这是一个类似于"热帖排序"的问题,id并不是我们通常认为的主键id,而是关联到帖子的外键.click值在排序上高于share值,因此先看click再看share,通过两者的一个加权值取得排序结果. 对于题主所描述的直接需求,个人意见是先li

MySql获取某个字段存在于哪个表的sql语句

本文为大家详细介绍下通过MySql查询某个字段所在表是哪一个,具体的sql语句如下,感兴趣的朋友可以参考下,希望对大家有所帮助   复制代码 代码如下: SELECT TABLE_SCHEMA,TABLE_NAME FROM information_schema.`COLUMNS` WHERE COLUMN_NAME = 'col1' col1为子段名.