如何在Mysql Join中的Select语句中添加序列号

时间:2017-11-16 14:04:54

标签: mysql sql select

数据库中有两个表。

== tblOrder ==
OrderId
Customer
== tblOrderItem ==
OrderItemId
OrderId
ItemId
Qty
Price

我的查询: -

SELECT o.OrderId,o.Customer,oi.ItemId,oi.Qty,oi.Price 
FROM tblorder o
JOIN tblorderitem oi ON oi.OrderId=o.OrderId

结果: -

+---------+----------+--------+-----+-------+
| OrderId | Customer | ItemId | Qty | Price |
+---------+----------+--------+-----+-------+
|    1001 | john day |    501 |   1 |    10 |
|    1001 | john day |    502 |   2 |     9 |
|    1002 | amy gill |    201 |   5 |     2 |
|    1003 | hardcaur |    501 |   1 |    10 |
|    1003 | hardcaur |    509 |   2 |     5 |
|    1003 | hardcaur |    201 |   2 |     2 |
+---------+----------+--------+-----+-------+

我想在select语句中生成SNO和SNOI(Temp Serial No),以便结果如下: -

+------+---------+----------+------+--------+-----+-------+
| SNO  | OrderId | Customer | SNOI | ItemId | Qty | Price |
+------+---------+----------+------+--------+-----+-------+
|    1 |    1001 | john day |    1 |    501 |   1 |    10 |
|    1 |    1001 | john day |    2 |    502 |   2 |     9 |
|    2 |    1002 | amy gill |    1 |    201 |   5 |     2 |
|    3 |    1003 | hardcaur |    1 |    501 |   1 |    10 |
|    3 |    1003 | hardcaur |    2 |    509 |   2 |     5 |
|    3 |    1003 | hardcaur |    3 |    201 |   2 |     2 |

我的疑问是什么?

1 个答案:

答案 0 :(得分:1)

您可以使用变量。

 set @ord ='';
 set @val1 =1;
 set @val2 =0;

select SR_No_1, OrderId, Customer, SR_No_2, ItemId, Qty, Price
from 
(
SELECT    t.*,
          @val1 := if(@ord=OrderId, @val1+1, 1) as SR_No_2,
          @val2 := if(@ord=OrderId,@val2, @val2+1) as SR_No_1,
          @ord := OrderId
FROM      table1 t
 ) t   
ORDER BY  orderId asc;

<强>结果:

+---------+---------+----------+---------+--------+-----+-------+
| SR_No_1 | OrderId | Customer | SR_No_2 | ItemId | Qty | Price |
+---------+---------+----------+---------+--------+-----+-------+
|       1 |    1001 | john day |       1 |    501 |   1 |    10 |
|       1 |    1001 | john day |       2 |    502 |   2 |     9 |
|       2 |    1002 | amy gill |       1 |    201 |   5 |     2 |
|       3 |    1003 | hardcaur |       1 |    501 |   1 |    10 |
|       3 |    1003 | hardcaur |       2 |    509 |   2 |     5 |
|       3 |    1003 | hardcaur |       3 |    201 |   2 |     2 |
+---------+---------+----------+---------+--------+-----+-------+

<强> DEMO

P.S。请注意,出于演示目的,我已将数据插入一个表格。您可以通过在2个表之间引入join

来修改查询