gpt4 book ai didi

mysql - 从最后一个完整行中选择数据

转载 作者:行者123 更新时间:2023-11-29 06:00:13 25 4
gpt4 key购买 nike

我有一个正在迁移到 MySQL 数据库中的电子表格。以后不填写电子表格,数据直接上传到数据库。电子表格现在位于两个表中。其中一个名为 Piles,包含有关产品的信息。另一个称为 Cubes,包含对产品执行的测试结果。两个表中的示例数据如下:

桩:

+----------+------------+---------+-----------------+
| ID | Date | MouldID | StockCode |
+----------+------------+---------+-----------------+
| 23A42895 | 2017-06-09 | 23A | 250CDJ09.0/0412 |
| 23B42895 | 2017-06-09 | 23B | 250CDJ07.0/0412 |
| 642895 | 2017-06-09 | 6 | 250CDJ09.0/0412 |
| 8642895 | 2017-06-09 | 86 | 250CDJ07.0/0412 |
| 842895 | 2017-06-09 | 8 | 250CDJ09.0/0412 |
+----------+------------+---------+-----------------+

立方体:

+---------+------------+-------------+---------+
| ID | Date | ConcTotalM3 | MouldID |
+---------+------------+-------------+---------+
| 2342895 | 2017-06-09 | 18.1 | 23 |
| 4842895 | 2017-06-09 | 57.9 | 48 |
| 842895 | 2017-06-09 | 108.4 | 8 |
| 1542895 | 2017-06-09 | 154.7 | 15 |
| 6242895 | 2017-06-09 | 204.6 | 62 |
+---------+------------+-------------+---------+

现在电子表格是手工填写的。当模具 ID 和日期匹配时,信息全部写在一行中。然后将 cubes 表中的数据向下拖动,直到找到另一个匹配行并重复该过程。

我的问题是,我如何编写一个输出相同的 sql 查询。我可以写一个连接日期和 MouldID 的查询,但这不会“向下拖动数据”请注意,如果 MouldID 的数字部分匹配,那么这就是该行的匹配项。 A和B没关系。我已经包含了我希望从样本数据中得到的输出以供引用。

+----------+------------+---------+-----------------+-------------+
| ID | Date | MouldID | StockCode | ConcTotalM3 |
+----------+------------+---------+-----------------+-------------+
| 23A42895 | 2017-06-09 | 23A | 250CDJ09.0/0412 | 18.1 |
| 23B42895 | 2017-06-09 | 23B | 250CDJ07.0/0412 | 18.1 |
| 642895 | 2017-06-09 | 6 | 250CDJ09.0/0412 | 18.1 |
| 8642895 | 2017-06-09 | 86 | 250CDJ07.0/0412 | 18.1 |
| 842895 | 2017-06-09 | 8 | 250CDJ09.0/0412 | 108.4 |
+----------+------------+---------+-----------------+-------------+

编辑:因此,为了清楚起见,我删除了一些列,因为我认为这是令人困惑的事情。我没有使用与 MouldID 的连接。目前我正在使用一个脚本来告诉我字母在字符串中的位置。然后我使用 left() 只获取数字部分。

我不能做的是让连接工作以使用最后一个匹配项(如果它不能匹配当前行)。为了解释我的示例输出,前两行是匹配项,因为 Cubes 表中有一个模具 23。模具 6 没有匹配项,因此它使用最后一个匹配项(来自上一行)。模具 86 也是如此。模具 8 在立方体表中确实有一个匹配项,因此它使用该匹配项。我希望这能让事情更清楚一些。谢谢

SQL Fiddle 供引用: http://sqlfiddle.com/#!9/6f19df/2

最佳答案

您可以使用一对嵌套替换来避免 A 、 B 并与 cubes.ID 匹配

    select 
Date
, a.MouldID
, a.StockCode
, a.Length
, a.Serials
, a.PrintNum
, b.ConcTotalM3
, b.Quantity
, b.Time
....
from Piles a
inner join Cubes b on replace(replace(a.ID, 'A', '') , 'B','') = b.id

寻找你的 sqlfiddle 这场比赛

  a.Date
, a.ID
, b.ID
, replace(replace(a.ID, 'A', '') , 'B','')
, a.MouldID
, a.StockCode
, b.ConcTotalM3
from Piles a
inner join Cubes b on replace(replace(a.ID, 'A', '') , 'B','') = b.ID

关于mysql - 从最后一个完整行中选择数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45677757/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com