我有 2 个表: session 和作业。此分配表有一个名为 scriptname
的列,其中字符串作为值。 session 表的列名等于 scriptname
+ 列 id
、uid
、timein
和 timeout
。当我向分配添加新实例时,我在 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/