【发布时间】:2018-01-08 22:06:13
【问题描述】:
我有一个名为“stocks”的表,其记录如下所述
ID| Date | Qty
1 | 2017-01-03 | 10
2 | 2017-02-11 | 15
3 | 2017-03-15 | 16
4 | 2017-04-25 | 30
5 | 2017-06-20 | 40
我想找出每个连续行的“数量”之间的差异。为此,我使用以下查询:
SELECT first_table.id as "First Table ID"
, first_table.date AS "From"
, first_table.qty AS "First Table Qty"
, second_table.id as "Second Table ID"
, second_table.date AS "To"
, second_table.qty AS "Second Table Qty"
, (second_table.qty - first_table.qty) AS Quantity_Difference
FROM stocks first_table
JOIN stocks second_table
ON first_table.id + 1 = second_table.id
以下描述了我从上述查询中得到的结果。
我的问题是:
1) 在上述查询中,子句first_table.id + 1 = second_table.id 是什么意思?
2) 在 JOIN 子句中,我在 first_table ID 上添加“1”(即 first_table.id + 1)。 但是,在我得到的结果中,为什么 second_table ID 会增加?我认为,通过在 first_table ID 上加 1,first_table ID 应该增加而不是第二个 table ID。
【问题讨论】:
-
first_table.id + 1 = second_table.id请求 id 比 first_table 记录多一个的 second_table 记录。 -
以这种方式逐步加入一个 id 是灾难的根源。
-
告诉编写该查询的人,AUTO_INCREMENT 列不能保证是连续的。
-
嗨 Glorian 将您的第一个表实现为代码而不是图像。它很小,所以..花时间摆脱反对票。
-
@Strawberry 我加入了ID,因为这只是为了问这个问题:)
标签: mysql join inner-join