繁体   English   中英

MySQL行编号没有得到理想的结果

MySQL Row Numbering not getting desired results

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我有以下查询,我想要做的是添加一个列,以确定这是一个不同的客户的订单。 entity_id对于每个订单都是唯一的,所以我想要做的就是为created_at订购的每个客户编号唯一的entity_id。 问题是订单中的每个项目都有一行,因此我的当前查询编号错误。

这是目前的结果

 Order Date          ,OrderID, SKU ,Qty     ,Customer Email   ,First,last  ,seqnum
'2015-04-01 14:48:13','19406','201','2.0000','test@google.com','joe','vers','1'
'2015-04-01 14:48:13','19406','201','2.0000','test@google.com','joe','vers','2'
'2015-04-01 14:48:13','19406','201','2.0000','test@google.com','joe','vers','3'
'2015-04-01 14:48:13','19406','201','2.0000','test@google.com','joe','vers','4'
'2015-04-01 14:48:13','19406','201','2.0000','test@google.com','joe','vers','5'
'2015-04-01 14:48:13','19406','103','1.0000','test@google.com','joe','vers','6'
'2015-04-01 14:48:13','19406','102','1.0000','test@google.com','joe','vers','7'
'2015-04-01 14:48:13','19406','102','1.0000','test@google.com','joe','vers','8'
'2015-04-01 14:48:13','19406','102','1.0000','test@google.com','joe','vers','9'
'2015-04-01 14:48:13','19406','201','1.0000','test@google.com','joe','vers','10'
'2015-04-01 14:48:13','19406','102','1.0000','test@google.com','joe','vers','11'
'2015-04-01 14:48:13','19406','105','1.0000','test@google.com','joe','vers','12'
'2015-04-13 17:45:15','20537','105','1.0000','test@google.com','joe','vers','13'
'2015-04-13 17:45:15','20537','102','1.0000','test@google.com','joe','vers','14'
'2015-04-13 17:45:15','20537','201','1.0000','test@google.com','joe','vers','15'
'2015-04-13 17:45:15','20537','201','1.0000','test@google.com','joe','vers','16'
'2015-04-29 14:42:28','22212','102','1.0000','test@google.com','joe','vers','17'
'2015-05-11 17:11:22','23301','102','1.0000','test@google.com','joe','vers','18'

这是期望的结果

 Order Date          ,OrderID, SKU ,Qty     ,Customer Email   ,First,last  ,seqnum
'2015-04-01 14:48:13','19406','201','2.0000','test@google.com','joe','vers','1'
'2015-04-01 14:48:13','19406','201','2.0000','test@google.com','joe','vers','1'
'2015-04-01 14:48:13','19406','201','2.0000','test@google.com','joe','vers','1'
'2015-04-01 14:48:13','19406','201','2.0000','test@google.com','joe','vers','1'
'2015-04-01 14:48:13','19406','201','2.0000','test@google.com','joe','vers','1'
'2015-04-01 14:48:13','19406','103','1.0000','test@google.com','joe','vers','1'
'2015-04-01 14:48:13','19406','102','1.0000','test@google.com','joe','vers','1'
'2015-04-01 14:48:13','19406','102','1.0000','test@google.com','joe','vers','1'
'2015-04-01 14:48:13','19406','102','1.0000','test@google.com','joe','vers','1'
'2015-04-01 14:48:13','19406','201','1.0000','test@google.com','joe','vers','1'
'2015-04-01 14:48:13','19406','102','1.0000','test@google.com','joe','vers','1'
'2015-04-01 14:48:13','19406','105','1.0000','test@google.com','joe','vers','1'
'2015-04-13 17:45:15','20537','105','1.0000','test@google.com','joe','vers','2'
'2015-04-13 17:45:15','20537','102','1.0000','test@google.com','joe','vers','2'
'2015-04-13 17:45:15','20537','201','1.0000','test@google.com','joe','vers','2'
'2015-04-13 17:45:15','20537','201','1.0000','test@google.com','joe','vers','2'
'2015-04-29 14:42:28','22212','102','1.0000','test@google.com','joe','vers','3'
'2015-05-11 17:11:22','23301','102','1.0000','test@google.com','joe','vers','4'

这是查询:

select sfo.created_at AS "Order Date", sfo.entity_id AS "Order ID",
       left(sfoi.sku,3) AS "SKU", sfoi.qty_ordered,   
       sfo.customer_email AS "Customer Email",     
       sfo.customer_firstname AS "Customer Firstname",     
       sfo.Customer_lastname AS "Customer Lastname",
       (@rn := if(@e = sfo.customer_email, @rn + 1,
                  if(@e := sfo.customer_email, 1, 1)
                 )
       ) as seqnum
from sales_flat_order sfo join
     sales_flat_order_item sfoi
     on sfoi.order_id = sfo.entity_id join
     sales_flat_order_address sfoa        
     on sfoa.entity_id = sfo.billing_address_id cross join
     (select @rn := 0, @e := '') params
order by sfo.customer_email, created_at;
1 个回复

啊,我明白了。 订单是基于电子邮件的数字。 好的。

select sfo.created_at AS "Order Date", sfo.entity_id AS "Order ID",
       left(sfoi.sku,3) AS "SKU", sfoi.qty_ordered,   
       sfo.customer_email AS "Customer Email",     
       sfo.customer_firstname AS "Customer Firstname",     
       sfo.Customer_lastname AS "Customer Lastname",
       (@rn := if(@e = sfo.customer_email,
                  if(@o = sfo.entity_id, @rn,
                     if(@o := sfo.entity_id, @rn + 1, @rn + 1
                       )
                    ),
                  if(@e := sfo.customer_email,
                     if(@o := sfo.entity_id, 1, 1),
                     if(@o := sfo.entity_id, 1, 1)
                    )
                 )
       ) as seqnum
from sales_flat_order sfo join
     sales_flat_order_item sfoi
     on sfoi.order_id = sfo.entity_id join
     sales_flat_order_address sfoa        
     on sfoa.entity_id = sfo.billing_address_id cross join
     (select @rn := 0, @e := '', @o := -1) params
order by sfo.customer_email, created_at, orderid;

这假设created_at对于每个订单都是相同的。

1 Mysql&Joins获得理想的结果

好的,所以我有一个包含以下重要字段的玩家表。 我还有一个名为event_player的数据透视表,其中包含以下字段。 现在,我需要获取所有为team_id = 1玩的用户,然后还要从同一sql中的event_player表中显示他们是否可用于该事件。 如果我跑 我会 ...

2015-11-20 12:25:17 4 28   mysql
2 MySQL的加入没有得到预期的结果

下面是我的查询,基本上有一个studentsection表,其中包含学生的课程信息,该表除了课程说明之外还包含我需要的所有内容。 这包含在课程表中。 由于某种原因,我似乎不能仅从studentsection表中获取条目,我尝试的每个查询都从课程表中获取所有内容。 任何帮助深表感谢! ...

2011-05-06 11:21:13 1 34   mysql
3 编号MySQL结果

使用以下MySQL查询: 我试图弄清楚如何对结果进行编号,以便在将它们显示在PHP页面上时,更容易理解结果。 例如,当前我的结果将显示如下内容: 我想要的是这样的清单: 这是通过MySQL查询还是PHP输出最好地实现? 我尝试将其添加到我的SELECT(@ro ...

2017-03-08 00:24:08 3 86   php/ mysql
4 MySQL中的编号行

我想对mysql中的选定行进行编号。 我的会议桌结构: 所以我只想选择从今天起算更大的日期行,结果应该像这样: ...

2014-10-22 19:32:19 2 50   php/ mysql
5 没有得到预期的结果

enter code here我有一个问题。 下面pl / sql之前曾经工作过,现在我不知道发生了什么...我想用一个复选框将记录插入一个名为来自交互式报告的传入的表中 我的sql是 我的pl / sql是 所有这一切都发生在进程之后..这工作正常..但是从最近我遇到的 ...

6 比较器-无法获得理想的结果

使用下面的代码。 但是它以对象形式而不是字符串形式给出响应。 让我知道我错了... 获取输出:排序之前:[Employee5 @ 19821f,Employee5 @ addbf1,Employee5 @ 42e816]排序之后:[Employee5 @ 19821f,Employe ...

7 自动更新MySql行编号

我已经在MySql中创建了一个表,其中“ id”列为auto_increment和Primary_key。 我最初做了3行,即1,2,3。 我删除了 2行,但编号仍为1、3。如何将其更改为1,2。 MySql表 ...

2017-07-25 17:16:20 1 28   mysql
8 在 mysql 中没有获得所需的输出

我正在 mysql 中触发查询,但没有获得所需的输出。 这是代码: 输出: 我想获取的结果 将最后 3 个值添加到 english,bcom,chemistry 将其增加 3 并使其总数为 BCOM: 14, Chemistry:10 , English: 13 ...

9 MySQL联接不产生期望的结果

我正在为ModX编写一个代码段,该代码段将查找具有指定电视机的所有文档为用户提交的值。 这是我正在使用的表的说明。 http://wiki.modxcms.com/index.php/Template_Variable_Database_Tables 这是我的查询: 目前它 ...

10 mysql 在 PHP 中使用自定义分页结果编号

我在基本的自定义 MVC 设计中有 PHP 代码,旨在搜索 MySQL 数据库中的记录,然后在分页页面中返回/输出结果。 我的问题是第 1 页中的结果编号为 1 -20,以及第 2 页、第 3 页等中的结果。 理想情况下,第 2 页的结果应为 21-40,第 3 页的结果应为 41-60...等 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2021 STACKOOM.COM