首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >根据MySql 5中表B的内容将0.n记录插入表'A‘

根据MySql 5中表B的内容将0.n记录插入表'A‘
EN

Stack Overflow用户
提问于 2010-06-02 17:12:59
回答 2查看 656关注 0票数 2

使用MySql 5,我有一个任务,需要根据另一个表的内容更新一个表。

例如,如果表'B‘包含'B1’,我需要在表'A‘中添加'A1’。如果表'B‘包含'B2',我需要在表'A’中添加'A2a‘和'A2b’,等等。在我们的例子中,我们感兴趣的表'B‘中的值是一个枚举。

现在,我有一个存储过程,它包含一系列语句,如:

代码语言:javascript
复制
INSERT INTO A
SELECT 'A1'
FROM B
WHERE B.Value = 'B1';
--Repeat for 'B2' -> 'A2a'; 'B2' -> 'A2b'; 'B3' -> 'A3', etc...

有更好的更干燥的方式来完成这一点吗?

编辑:表'B‘中可能有对表'A’没有等效值的值。

编辑:示例

表B

代码语言:javascript
复制
+-------+
| Value |
+-------+
| B1    |
| B1    |
| B2    |
| B3    |
| FOO   |
+-------+

表A

代码语言:javascript
复制
+-------+
| Value |
+-------+
| A1    |
| A2a   |
| A2b   |
| A3    |
+-------+
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-06-02 19:50:14

您可以考虑创建一个包含所需测试/结果组合的表,例如:

代码语言:javascript
复制
TABLE Tests

Test  |  Result
----------------
B1    |  A1
B2    |  A2a
B2    |  A2b
B3    |  A3

然后,您可以将该表内部连接到TABLE_B,并读出结果列以确定要插入到TABLE_A中的值:

代码语言:javascript
复制
INSERT INTO TABLE_A
SELECT DISTINCT TABLE_B.Result
FROM TESTS, TABLE_B
WHERE TABLE_B.Value = TESTS.Test
票数 2
EN

Stack Overflow用户

发布于 2010-06-02 17:18:34

使用案例陈述

代码语言:javascript
复制
INSERT INTO TABLE_A
SELECT CASE 
         WHEN b.value = 'B1' THEN 'A1'
         WHEN b.value = 'B2' THEN 'A2a'
       END
  FROM TABLE_B b

如果表'B‘包含'A2a’和'A2b‘,我需要在表A中添加'B2’和‘B2’。

对不起,可以返回一个值。switch语句允许在情况下失败,但也不会返回一个以上的值。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2959924

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档