这是一个语法问题,我不知道我的想法是否可行。我找不到任何关于它的东西。
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;提前感谢您的任何建议!
发布于 2017-04-27 06:08:24
看起来你必须运行多个步骤才能做到这一点:
要做到这一点,您可以使用信息模式。这将如下所示(虚拟代码,没有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
ENDhttps://stackoverflow.com/questions/43644997
复制相似问题