mysql - 根据mysql中另一个表中的新条目在一个表中添加新列

标签 mysql sql

我有 2 个表: session 和作业。此分配表有一个名为 scriptname 的列,其中字符串作为值。 session 表的列名等于 scriptname+ 列 iduidtimeintimeout 。当我向分配添加新实例时,我在 scriptname 列中获得了新值,我想将其作为新列添加到默认值为 0 的 session 中。我该怎么做?

我目前所做的是删除表并根据 scriptname 列创建一个新表。问题当然是我丢失了所有数据。

DROP TABLE sessions;
SET SESSION group_concat_max_len = 1000000;
SELECT
  CONCAT(
    'CREATE TABLE sessions (',
    GROUP_CONCAT(DISTINCT
      CONCAT(scriptname, ' BOOL DEFAULT 0')
      SEPARATOR ','),
    ');')
FROM
  assignments
INTO @sql;

PREPARE stmt FROM @sql;
EXECUTE stmt;

ALTER TABLE sessions
ADD COLUMN `timeout` timestamp not null FIRST,
ADD COLUMN `timein` timestamp not null DEFAULT CURRENT_TIMESTAMP FIRST,
ADD COLUMN `uid` VARCHAR(128) not null FIRST,
ADD COLUMN `id` INT(11) AUTO_INCREMENT PRIMARY KEY not null FIRST;

我真的不是 sql 专家,希望有人能帮助我!提前致谢。

最佳答案

考虑向表格中添加行。然后,稍后,在显示输出时“旋转”以生成列。

如您所见,添加列非常笨拙。添加太多列最终会达到某个限制。添加行基本上是无限的。

枢轴在这个论坛上讨论了很多次,所以我不会在这里重复那些讨论。

关于mysql - 根据mysql中另一个表中的新条目在一个表中添加新列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42961573/

相关文章:

c# - ServiceStack.OrmLite : Where is the method to write custom SQL and get result set back?

mysql - 连接返回错误结果的表

sql - 追加两个表 - 联合在 SQL (Teradata) 中不起作用

sql - 在 WHERE 子句中多次使用同一列

mysql - 如何处理触发器中的碰撞问题?

java - Java如何执行多条SQL语句?

mysql - Go - 连接到外部 mysql 数据库

php - 将数组存储在数据库中

mysql - 如果可能的话,如何诊断长时间运行的事务并保存数据?

mysql - sql查询将可变数量的行合并为一行