Mysql在运行时根据列动态复制行

标签 mysql sql

想象一下下面的表结构:

约会

+----+-------+
| id | name  |
+----+-------+
|  1 | test1 |
|  2 | test2 |
|  3 | test3 |
+----+-------+

appointment_carers

+----+----------------+--------+--------+--------+
| id | appointment_id | carer1 | carer2 | carer3 |
+----+----------------+--------+--------+--------+
|  1 |              1 |      1 |      2 |      3 |
|  2 |              2 |      4 |      5 |      6 |
+----+----------------+--------+--------+--------+

不幸的是,我现在无法改变这些表的现有结构。

有没有一种方法可以查询所有预约,并且对于每个看护人时段,我都可以得到重复的预约行?

下面是查询预期结果的示例:

+----+-------+-------+
| id | name  | carer |
+----+-------+-------+
|  1 | test1 |     1 |
|  1 | test1 |     2 |
|  1 | test1 |     3 |
|  2 | test2 |     4 |
|  2 | test2 |     5 |
|  2 | test2 |     6 |
+----+-------+-------+

最佳答案

select id, name, carer from (
select appointment_id, carer1 as carer from appointment_carers
union
select appointment_id, carer2 as carer from appointment_carers
union
select appointment_id, carer3 as carer from appointment_carers
) as carers
join appointments on id = appointment_id;

关于Mysql在运行时根据列动态复制行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47092845/

相关文章:

sql - 在 Oracle 中使用 to_date 的查询在 Windows 和 Ubuntu IDE 中运行不同

mysql - 如何在 WHERE 子句中使用别名列 day?

mysql - 我需要对 3 月份的访问次数求和,并且在另一列中包含 4 月份的访问次数,我该如何在一个查询中执行此操作?

sql - 获取日期范围内星期几的日期

java - 分页时确定是否有下一页的有效或聪明的方法

mysql - 将日期时间的值显示到 DataGridView 中的不同行

mysql - 从 innodb 导入到 ndbcluster 时出现问题

mysql - 如果数据存在则更新数据库,否则一步插入 MySQL

mysql - 根据上次修改的属性排序时出现分页问题

mysql - 数据库设计 : Managing old and new data in database table