mysql - 填补mysql中重复序列中的空白

标签 mysql sql

我有一张表存储问题 1 - 16 和用户给出的答案,并按他们的唯一 ID 分组。例如:

+--------+-----------------+--------+
| number | question_number | answer |
+--------+-----------------+--------+
| 1      | 1               | y      |
+--------+-----------------+--------+
| 1      | 2               | n      |
+--------+-----------------+--------+
| 1      | 3               | y      |
+--------+-----------------+--------+
| 2      | 1               | n      |
+--------+-----------------+--------+
| 2      | 3               | y      |
+--------+-----------------+--------+

我想要的是一个 SELECT 或 INSERT,它将填充序列中缺失的值。因此,在“数字”2 的情况下,它将填写 question_number 2 并为答案插入一个空值。所以基本上我想填补重复序列的空白(在我的例子中,1-3)

最佳答案

您可以使用交叉连接左连接 来做到这一点:

select n.number, qn.question_number, q.answer
from (select distinct number from questions) n cross join
     (select distinct question_number from questions) qn left join
     questions q
     on q.number = n.number and q.question_number = qn.question_number;

关于mysql - 填补mysql中重复序列中的空白,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38297932/

相关文章:

MySQL 创建并使用带有变量的新数据库

sql - sql server中Identity列值突然跳到1001

mysql - SQL 查询从列中获取不同的数据并在结果中获取其余数据

sql - rowsBetween 和 rangeBetween 有什么区别?

php - Laravel 查询一个时间范围

mysql - 在获取特定列中某些列的组的最大值后,如何为列提供条件?

php - 获取 2 个输入值中的任意一个并保存到 PHP MySQL 中的同一数据库字段

php - PostgreSQL:在特定数据库中创建模式 [NOT psql]

mysql:如何限制查询?

mysql - 用于显示查询历史的 SQL 命令