我有以下三个表:
表 A:
id VARCHAR(32) | value VARCHAR(32) | groupId INT
abcdef | myValue1 | 1
ghijkl | myValue2 | 2
mnopqr | myValue3 | 1
表 B:
id VARCHAR(32) | value VARCHAR(32) | userId INT
abcdef | myValue4 | 1
uvwxyz | anotherValue | 1
表 C:
id VARCHAR(32) | someOtherColumns...
abcdef
ghijkl
mnopqr
...
uvwxyz
表 A 和 B 用于 am:n 关联,因此两个表中的“id”列引用相同的字段(表 c 中的“id”列)。我想要做的是(例如)......选择表A中的所有条目where groupId = 1
SELECT * FROM TableA WHERE groupId = 1
并选择表 B 中的所有条目where userId = 1
SELECT * FROM TableB WHERE userId = 1
这一切都没有问题......但是以下使选择语句变得困难:如何合并两个选择结果并替换第一个结果的值?例如:
选择表 A 中的所有条目,where groupId = 1
我将得到 abcdef 和 mnopqr。当我选择表 B 中 userId = 1 的所有条目时,我还将获得 abdef(以及另外的 uvwxyz)。
现在,表 B 中 abcdef 的值应该替换表 A 的选择结果中的值。并且应该将 uvwxyz-entry 添加到结果中。
最后,我正在寻找一个生成下表的查询:
id VARCHAR(32) | value VARCHAR(32)
abcdef | myValue4 -- myValue1 from the select-statement in tableA should be overwritten
mnopqr | myValue2 -- from table A
uvwxyz | anotherValue -- from table B
我希望有人知道如何做到这一点......提前感谢您的任何建议!顺便说一句......如果有机会使用一个(长)选择语句来实现这一点,那就太好了。