我有以下格式的多个查询:
查询1:
Select id,first_name,middle_name
from table1
where id < 4
字符串
输出1:
| ID|名字|中间名|
| --|--|--|
| 1 |琳达|玛丽|
| 2 |玛丽|爱丽丝|
| 3 |约翰|史蒂文|
疑问二:
Select id,last_name
from table2
where id < 4
型
输出2:包含可选列(姓氏),这意味着它不显示所有条目,只有当它有一个值。
| ID|姓氏(_N)|
| --|--|
| 1 |Jackson|
| 3 |汤姆森|
我如何得到以下内容?ID列是公共的,并正确地关联不同的输出.
| ID|名字|中间名|姓氏(_N)|
| --|--|--|--|
| 1 |琳达|玛丽|Jackson|
| 2 |玛丽|爱丽丝|NULL|
| 3 |约翰|史蒂文|汤姆森|
更复杂的情况
表1
| ID|条目|结果|
| --|--|--|
| 1 |名字|琳达|
| 2 |名字|玛丽|
| 3 |名字|约翰|
| 1 |第二名|利亚姆|
| 2 |第二名|紫|
| 3 |第二名|夏洛特|
表2
| ID|条目|结果|
| --|--|--|
| 1 |中间名|玛丽|
| 2 |中间名|爱丽丝|
| 3 |中间名|史蒂文|
| 1 |姓氏(_N)|Jackson|
| 3 |姓氏(_N)|汤姆森|
期望输出仍然是
| ID|名字|中间名|姓氏(_N)|
| --|--|--|--|
| 1 |琳达|玛丽|Jackson|
| 2 |玛丽|爱丽丝|NULL|
| 3 |约翰|史蒂文|汤姆森|
2条答案
按热度按时间yrdbyhpb1#
将JOIN添加到table 2。
字符串
更新
根据您最近对问题的编辑,您可以使用
conditional aggregation
来实现这些更新的结果。型
| ID|名字|中间名|姓氏(_N)|
| --|--|--|--|
| 1 |琳达|玛丽|Jackson|
| 2 |玛丽|爱丽丝||
| 3 |约翰|史蒂文|汤姆森|
View on DB Fiddle
11dmarpk2#
这可以通过
LEFT JOIN
来实现:字符串
根据您最近的编辑,数据结构已更改为实体-属性-值模型(EAV)。
我也使用了条件聚合,但只应用于table 2以获取中间名和姓氏:
型
Demo here