问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501
你好,欢迎来到懂视!登录注册
当前位置: 首页 - 正文

MySQL中怎样取出具有相同字段值的前n条记录? 比如:select name where id

发布网友 发布时间:2023-03-20 12:27

我来回答

3个回答

热心网友 时间:2023-10-06 04:48

CREATE TABLE SALE_REPORT (
     SALE_DATE  DATETIME NOT NULL ,
     SALE_ITEM  VARCHAR(2) NOT NULL ,
     SALE_MONEY DECIMAL(10,2) NOT NULL
);

 

DELIMITER //
CREATE PROCEDURE CreateReportData()
BEGIN
  DECLARE  v_begin_day  DATE;
  DECLARE  v_end_day  DATE;
  SET v_begin_day = STR_TO_DATE('2009-01-01', '%Y-%m-%d');
  SET v_end_day = STR_TO_DATE('2013-01-01', '%Y-%m-%d');
  WHILE v_begin_day <  v_end_day DO
    INSERT INTO SALE_REPORT VALUES
      (v_begin_day,  'A',
          Year(v_begin_day) );
    INSERT INTO SALE_REPORT VALUES
      (v_begin_day,  'B',
          Month(v_begin_day) );
    INSERT INTO SALE_REPORT VALUES
      (v_begin_day,  'C',
          DAY(v_begin_day) );
    SET v_begin_day = DATE_ADD(v_begin_day, INTERVAL 1 DAY);
  END WHILE;
END;
//
DELIMITER ;
call CreateReportData();





使用模拟的 ROW_NUMBER + PARTITION 的方式

SELECT
  sale_item,
  sale_date,
  sale_money
FROM
(
SELECT
  CASE 
    WHEN @cn != sale_item THEN @rownum:= 1 
    ELSE @rownum:= @rownum + 1  
    END AS No,
  @cn := sale_item AS sale_item,
  sale_date,
  sale_money
FROM
  (SELECT @rownum:=0) r,
  (SELECT @cn:='') p,
  SALE_REPORT
ORDER BY
  SALE_ITEM,
  SALE_DATE DESC
) subQuery
WHERE
  no <=3;
 
+-----------+---------------------+------------+
| sale_item | sale_date           | sale_money |
+-----------+---------------------+------------+
| A         | 2012-12-31 00:00:00 |    2012.00 |
| A         | 2012-12-30 00:00:00 |    2012.00 |
| A         | 2012-12-29 00:00:00 |    2012.00 |
| B         | 2012-12-31 00:00:00 |      12.00 |
| B         | 2012-12-30 00:00:00 |      12.00 |
| B         | 2012-12-29 00:00:00 |      12.00 |
| C         | 2012-12-31 00:00:00 |      31.00 |
| C         | 2012-12-30 00:00:00 |      30.00 |
| C         | 2012-12-29 00:00:00 |      29.00 |
+-----------+---------------------+------------+
9 rows in set (0.02 sec)

追问谢谢!太复杂了,有没有两三句就可以解决的办法?

热心网友 时间:2023-10-06 04:49

嵌套就可以了

热心网友 时间:2023-10-06 04:49

select top 3 * from tablename orderby id desc
MySQL之查询重复记录、删除重复记录方法大全

一、查找重复记录\ 1、查找全部重复记录\ Select * From 表 Where 重复字段 In (Select 重复字段 From 表 Group By 重复字段 Having Count(*)&gt;1)2、过滤重复记录(只显示一条)\ Select * From HZT Where ID In (Select Max(ID) From HZT Group By Title) 注:此处显示ID最大一条记录 二、...

在mysql数据库中如何让某个字段有重复的只取一条

select top 1 id,name,age from 表 order by age desc按照年龄倒序排序,然后取第一条。考虑可能有多人年龄相同,如果都需取出,可以这样写:select id,name,age from 表 where age=(select max(age) from 表)

Mysql查询数据库表中前几条记录

在查询分析器中输入select*fromstudentlimit5;即可查询到下图的情况:所以说,在Mysql中取出表中前几条记录是用关键字 limit,而在Sql-server中则是用top关键字,但是Mysql子查询却不支持 limit ,也就是说,如:select*fromuserswhereidnotin(selectidfromuserslimit3)and1limit3;是有语法错误的,/* ...

在MYSQL中怎么写SQL语句,能取到表中按ID降序排列的前五条记录??

你可以设定多个字段来排序。你可以使用 ASC 或 DESC 关键字来设置查询结果是按升序或降序排列。 默认情况下,它是按升序排列。你可以添加 WHERE…LIKE 子句来设置条件。所以,楼主所问的问题答案应该为:select ... from ... order by ID desc limit(0,5)...

mysql怎么查询一条记录的前一条记录和后一条记录

select top 1 * from news where id &gt; ID and classid=classid order by id asc select top 1 * from news where id &lt; ID and classid=classid order by id desc 你可能要先把当前的记录查出来,取出这条记录的分类ID,然后才能写出下面的2条查询语句。mysql 与 msql一样,都用Transact-...

mysql 根据两个字段值查询时如何去除重复数据

假设表名为test:select * from (select *, concat(name,code) as __f from test order by date desc) __t group by __f;

MySQL怎么查询数据库中的前几条记录并返回呢

有“WHERE 1”这种写法吗?我没有试过,按我的理解WHERE条件不能这样省略吧?总得有个完整的表述吧,是某条件对于1?还其它?应该是“WHERE ID = 1”或者“WHERE ID &gt; 1”这样的格式。ORDER BY 'ID',加引号我没有用过,是“`”还是“'”?我的习惯是不加,直接写“ORDER BY ID”...

在mysql数据库中如何让某个字段有重复的只取一条?

给个例子把,比如:表table_a 4条数据id A B C D01 ab 1a2 1b2 12102 ab 2a3 3b3 4a103 ac 1a2 1b2 12104 ac 2a4 3b2 52g何让A字段重复取条 比01 ab 1a2 1b2 12103 ac 1a2 1b2 121 保留相同A值id行select *from table_a awhere not exists (select 1 from table_a b...

mysql获取第n条记录

1、开启电脑,并打开mysql的数据库,在数据库中点击并进入右上的查询,在点击查询下面的新建查询。如图,2、接下来就可以输入SELECT * from crew_1 order by gmt_create这个语句,然后表中的所有记录就会按时间排序查询。如图。3、如果需要获取表中按时间排序的第一条记录,就输入SELECT * from crew_...

如何在MySQL中查询当前数据上一条和下一条的记录

方法一:查询上一条记录的SQL语句(如果有其他的查询条件记得加上other_conditions以免出现不必要的错误):select * from table_a where id = (select id from table_a where id &lt; {$id} [and other_conditions]order by id desc limit 1 )[and other_conditions];查询下一条记录的SQL语句(...

声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。
E-MAIL:11247931@qq.com
抽动症的小孩子应该多吃什么啊? 爬山虎的脚主要讲了爬山虎什么内容? oversize衬衣怎么穿搭 下课后,同学们在操场上做什么? 四川和运机械有限公司公司实力 人体含水量百分比最高的器官是( ) 翡翠玉镯要怎么去识别是不是a货翡翠玉镯真假的鉴别方法 怎么分辨翡翠玉镯的真假 分辨翡翠玉镯真假的方法 我是一位高一女生,快要分班了,语数英三科100以上,物理不及格,化学80... 新异教观点 mysql选择语句问题 一个tnum对应多个legnum,按12345……排列 如何选出没有le mysql select 问题,两个 table 如下: 关于sql语句问题:我想取出数据库的前10行,(mysql数据库)用select top 10 * from product; 却提示出! 荣耀手机有锁屏怎么下载原神手游 早上喝萝卜汁也能去眼袋吗 黑眼圈眼袋怎么治啊? 为什么空间里显示1个共同好友 而在她的资料中显示有两个 怎么把微信里的斗地主弄到桌面 - 信息提示 女生频繁换微信头像是怎么回事? 有什么软件能同步发说说朋友圈微博的吗?最好连in那些可以一键同时发送的 刚注册的换头像怎么就违规了呢 如何自助解封 微信账号自助解封方法 怎样解封? 怎么自助解封? 怎么调取新浪某一用户的微博 石榴成熟怎么写作文 荣耀手机隐藏图片怎么找? 苹果电脑可以玩实况2010吗?怎么下?PS3手柄能在苹果上用吗? mac不能播放实况照片 教师节家长送礼,老师如何回绝? 外省第三方证书在广东能用吗 便利店加盟加盟费 丫T2116743288288快递到哪了? 在京东买东西,怎么修改地址? 通电话时的铃声有一段好像是跳芭蕾舞的叫什么 如果注销实名那是不是代表我微信注销了就没有了要重新注册一个? 京东兼职客服的面试条件和工资待遇怎么样,听面试过的橙子怎么说 京东易贷是否合法 关于京东贷款的问题 京东易贷需要给包装费才可以提现,钱到平台上不提现是不是可以不用还? 千万不要在网上贷款除了阿里系的,在网上贷款被骗的有多少,是怎么骗的聊聊 苹果设置的铃声有点刺耳对手机喇叭和听筒没事吗 酒精对皮革有伤害吗? 皮革沙发可以用酒精喷吗? 酒精对真皮座椅有影响吗 MySQL错语信息错误编码:1366错误信息:Incorrectintegervalue:&#39;&#39;forcolumn&#39;shoptype&#39;atrow1 MySQL错语信息 错误编码:1366 错误信息:Incorrect integer value: &#39;&#39; for column &#39;shoptype&#39; at row 1 在京东买了个电脑,是上门自提,但是他的订单状态说正在送货暂不能上门自提怎么回事?怎么办都好几天了 梦见一条大蛇被砍断还活着的预兆
  • 焦点

最新推荐

猜你喜欢

热门推荐