这是一个语法问题,我不知道我的想法是否可能。我找不到任何相关信息。
CREATE TABLE IF NOT EXISTS newTable
SELECT something1, something2, something3 FROM someTable;
使用此语法创建新表,我可以为其添加主键吗?像这样的事情:
CREATE TABLE IF NOT EXISTS newTable
SELECT id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, something1, something2, something3 FROM someTable;
我有一个大型且复杂的动态查询,它返回我需要的确切结果。剩下的就是将这些结果添加为自动增量主键! 因为查询是动态的,所以我不知道将获得的列数,所以我不能只是:
DROP TABLE IF EXISTS newTable;
CREATE TABLE newTable(
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
something1 VARCHAR(255),
something2 VARCHAR(255),
something3 VARCHAR(255)
) ENGINE=MEMORY;
预先感谢您提供的任何建议!
最佳答案
看来您必须运行多个步骤才能执行此操作:
- 使用主键创建表
- 使用存储过程将列添加到此表(可以与步骤 1 合并)
为此,您可以使用信息模式。这将如下所示(虚拟代码,没有 mysql 方便调试任何内容):
CREATE PROCEDURE create_table(table_name VARCHAR(200))
BEGIN
declare cursor table_columns as SELECT COLUMN_NAME, DATA_TYPE,
IS_NULLABLE, COLUMN_DEFAULT FROM INFORMATION_SCHEMA.COLUMNS
WHERE table_name = 'table_name'
LOOP
concatenate create table statement
END LOOP;
execute create table statement
END
关于mysql - 为使用 SELECT 语句创建的表添加自增主键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43644997/