遍历表并根据条件添加条目

w80xi6nr  于 2021-06-18  发布在  Mysql
关注(0)|答案(2)|浏览(298)
  1. Table A (id, rollNumber, spaces)

示例数据

  1. 1 1 A
  2. 2 1 B
  3. 3 1 C
  4. 4 2 A
  5. 5 3 A

对于每个卷数,应该有3个空格,即a、b、c。然而,目前的条目并不一致。有的有,有的没有。
我必须遍历这个表,为任何没有的rollnumber添加b,c空间。

scyqe7ek

scyqe7ek1#

一种方法是生成一个日历表,其中包含您希望显示的所有不同数据。然后,使用 MINUS 带着一个 INSERT INTO ... SELECT 填充丢失的数据。

  1. INSERT INTO yourTable (rollNumber, spaces)
  2. SELECT r.rollNumber, s.spaces
  3. FROM
  4. (
  5. SELECT DISTINCT rollNumber FROM yourTable
  6. ) r
  7. CROSS JOIN
  8. (
  9. SELECT 'A' AS spaces UNION ALL
  10. SELECT 'B' UNION ALL
  11. SELECT 'C'
  12. ) s
  13. LEFT JOIN yourTable t
  14. ON r.rollNumber = t.rollNumber AND s.spaces = t.spaces
  15. WHERE
  16. t.rollNumber IS NULL;
展开查看全部
gwbalxhn

gwbalxhn2#

  1. SELECT *
  2. FROM
  3. (SELECT DISTINCT rollNumber FROM t) r
  4. CROSS JOIN
  5. (SELECT DISTINCT spaces FROM t) s
  6. LEFT JOIN t
  7. ON s.spaces = t.spaces
  8. AND r.rollNumber = t.rollNumber

子表 r 以及 s 提取每个可能的值 rollNumber 以及 spaces ; 交叉连接使这些值的每一个可能的组合。然后,与原始表的左联接将提供所有这些组合,并在可能的情况下填充原始数据。

相关问题