mysql - 根据它们来自的表,从具有真/假值的不同表中收集所有行
问题描述
如果我有这些不同的表:
Participants_1
name | age
James | 18
Participants_2
name | age
Daniel | 20
James | 18
我怎样才能将它插入到这样的另一个表中?
All_Participants
name | age | in_participants_1 | in_participants_2
James | 18 | 1 | 1
Daniel | 20 | 0 | 1
所以基本上All_Participants表是来自其他 Participants 表的所有行的集合,以及is_participants_*
是否来自特定表的附加字段。
解决方案
你需要一个UNION ALL
with GROUP BY
:
-- INSERT INTO ...
SELECT name, age, MAX(in_participants_1), MAX(in_participants_2)
FROM (
SELECT name, age, 1 AS in_participants_1, 0 AS in_participants_2 FROM participants_1
UNION ALL
SELECT name, age, 0, 1 FROM participants_2
) AS u
GROUP BY name, age
理想情况下,您会将所有参与者存储在一张表中,并将他们的 ID 存储在参与者 1 和 2 表中。或者更好的是,创建一个存储参与者 ID 和事件 ID 的参与表。
推荐阅读
- python - Python:来自具有经度和纬度的数据帧的 A* 路由
- antlr4 - Python ANTLR4 无关输入加标记删除
- php - 问题 - Google API 日历 - G Suite - 服务帐户 - PHP
- jdbc - HIVE JDBC 选项以允许由“;”分隔的多个查询
- postgresql - 序列增量如 2018AA000001、2018AB000001、2018AC000001
- android - findViewById 不适用于特定视图
- c++ - 从函数内的对象向量中释放内存
- javascript - 将类名称附加到包含在 div 类下的 iframe id
- javascript - Redux 表单:使用 axios 使用来自顶部组件的数据填充表单的正确方法
- javascript - 如何取消选中嵌套复选框并在jquery中保留当前单击的复选框?