gpt4 book ai didi

mysql - 从查询结果集中创建新表行

转载 作者:行者123 更新时间:2023-11-30 01:13:28 24 4
gpt4 key购买 nike

长期潜伏者,第一次海报。我已经在这个项目上工作了一段时间,但似乎遇到了困难。我浏览了大量有关查询等效性的帖子,但没有一个适用。此时我想知道我是否可以在 SQL 中执行此操作,或者我是否需要编写一个程序来完成繁重的工作。无论如何,事情就是这样:

我有两个实验室,实验室 A 和实验室 B,它们都有纲要(综合测试列表)。我试图通过为每个实验室创建一个顺序代码表、每个实验室的结果表以及每个实验室的顺序结果表来尽我所能标准化概要。

Lab A

LabA_Order_Codes

LabA_Order_Code LabA_Order_Desc
000455 Thyroid Panel
000620 Thyroid Panel with TSH
...
999706 ECG Tracing/Computer Analysis

LabA_Order_Result_Code_Id LabA_Order_Code LabA_Result_Code
1 000455 001149
2 000455 001156
3 000455 001164
4 000620 004264
5 000620 001149
6 000620 001156
7 000620 001164
...
19495 999706 999706



LabA_Result_Codes

LabA_Result_Code LabA_Result_Desc LabA_Result_LOINC
001149 Thyroxine (T4) 3026-2
001156 T3 Uptake 3050-2
001164 Free Thyroxine Index 32215-6
...
004264 TSH 11579-0
...
999706 ECG Interpretation 11524-6


Lab B

LabB_Order_Codes

LabB_Order_Code LabB_Order_Desc
7020 Thyroid Panel
7444 Thyroid Panel with TSH
...
95594 Retest Phenobarbital

LabB_Order_Result_Code_Id LabB_Order_Code LabB_Result_Code
...
10780 7020 55075100
10781 7020 55075200
10782 7020 55075300
...
20579 7444 55075100
20580 7444 55075200
20581 7444 55075300
20582 7444 55075400
...
19495 95594 99950100

LabB_Result_Codes

LabB_Result_Code LabB_Result_Desc LabB_Result_LOINC
55075100 Thyroxine (T4) 3026-2
55075200 T3 Uptake 3050-2
55075300 Free Thyroxine Index 32215-6
55075400 TSH 11579-0
...
99950100 Phenobarbital 11524-6

我想要完成的是填充一个单独的表,当 LOINC 代码相同时(这表明正在执行相同的测试),该表派生订单代码。如果 LOINC“指纹”是唯一的,则该行中其他实验室的订单代码为空,但常见的“指纹”都位于同一行。因此,当 LOINC 代码 3026-2、3050-2 和 32215-6 一起出现时,实验室 A 和实验室 B 的条目及其各自的订单代码应位于同一行中。很抱歉条目很长,但我想彻底解释一下!

以防万一,我正在使用 MySQL 5.6,这对任何人都很重要。

Target Table

Test_Id Test_Desc LabA_Order_Code LabB_Order_Code
1 Thyroid Panel 000455 7020
2 Thyroid Panel w/TSH 000620 7444
...
3490 ECG Interpretation 999706 null
...
4210 Retest Phenobarbital null 95594

最佳答案

理解你在寻找什么有点困难,但我会尝试一下。

听起来您应该将其分成几遍。

我将您的 LOINC 视为业务 key (在两个来源上都是唯一的)。因此,如果您将 LOINC 添加到目标表,您可以在每个源上执行插入/更新过程。

第一次通过:(更新 LAB A 中的现有内容) 从 LabA 获取 LOINC 和 Order_Code 的唯一列表(查询)INNER JOIN 到您现有的目标表(位于 loinc)并UPDATE LabA 的 Test_Desc、Order_Code。

第二遍:(插入来自 LAB A 的新内容) 从 LabA 获取 LOINC 和 Order_Code 的唯一列表(查询)LEFT JOIN 到目标表(位于 loinc)和 INSERT 新行(LabA 为 null)其中 TARGET.Test_id 为 null

第三遍:(更新实验室 B 中的现有内容) 从 LabB 获取 LOINC 和 Order_Code 的唯一列表(查询)INNER JOIN 到您现有的目标表(位于 loinc)并UPDATE LabB 的 Test_Desc、Order_Code。

第四遍:(插入来自 LAB A 的新内容) 从 LabB 获取 LOINC 和 Order_Code 的唯一列表(查询)LEFT JOIN 到目标表(位于 loinc)和 INSERT 新行(LabB 为 null)其中 TARGET.Test_id 为 null

您应该能够将整个过程放入一个存储过程中,然后您可以调用该存储过程,它会为您完成这一切。

如果您有兴趣,如果您想了解更多相关信息,这是一个更新插入过程。

关于mysql - 从查询结果集中创建新表行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19275383/

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