这是一个语法问题,我不知道我在想什么是可能的。我找不到任何关于它的东西。
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;
提前感谢任何给定的建议!
答案 0 :(得分:0)
看起来您必须执行多个步骤才能执行此操作:
要执行此操作,请使用信息架构。这将看起来如下(虚拟代码,没有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