使用MySql 5,我有一个任务需要根据另一个表的内容更新一个表。
例如,如果表“B”包含“B1”,则需要将“A1”添加到表“A”。如果表“B”包含“B2”等,则需要将“A2a”和“A2b”添加到表“A”中。。在我们的例子中,我们感兴趣的表“B”中的值是一个枚举。
现在我有一个存储过程,其中包含一系列语句,如:

INSERT INTO A
SELECT 'A1'
FROM B
WHERE B.Value = 'B1';
--Repeat for 'B2' -> 'A2a'; 'B2' -> 'A2b'; 'B3' -> 'A3', etc...

有没有更好更干巴巴的方法来完成这件事?
编辑:
表“B”中的值可能没有与表“A”相同的值。
编辑:
例子
给定表B
+-------+
| Value |
+-------+
| B1    |
| B1    |
| B2    |
| B3    |
| FOO   |
+-------+

除表A外
+-------+
| Value |
+-------+
| A1    |
| A2a   |
| A2b   |
| A3    |
+-------+

最佳答案

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

TABLE Tests

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

然后,您可以将此表内部联接到表B,并读取结果列以确定要插入表A的值:
INSERT INTO TABLE_A
SELECT DISTINCT TABLE_B.Result
FROM TESTS, TABLE_B
WHERE TABLE_B.Value = TESTS.Test

关于sql - 根据MySql 5中表'B'的内容,将0..n插入到表'A'中,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2959924/

10-10 13:25