Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 如何使用现有表中的列创建新表?_Mysql_Sql - Fatal编程技术网

Mysql 如何使用现有表中的列创建新表?

Mysql 如何使用现有表中的列创建新表?,mysql,sql,Mysql,Sql,我有两个表,Test1和Test2,我想创建另一个表,Test3使用的列是来自Test1和Test2的键 我试图找到正确的语法,但不知道如何。 我已经从Test1中选择了Person\u ID,但这并没有起作用 CREATE TABLE Test1 ( Person_ID VARCHAR(10) key, First_Name VARCHAR(20), Last_Name VARCHAR(20) ) CREATE TABLE Test2 ( Card_ID VA

我有两个表,Test1和Test2,我想创建另一个表,Test3使用的列是来自Test1和Test2的键

我试图找到正确的语法,但不知道如何。 我已经从Test1中选择了Person\u ID,但这并没有起作用

CREATE TABLE Test1 (
    Person_ID VARCHAR(10) key,
    First_Name VARCHAR(20),
    Last_Name VARCHAR(20)
)

CREATE TABLE Test2 (
    Card_ID VARCHAR(20) key,
    Date_Issued DATE
)

#what I tried
CREATE TABLE Test3 (
    ID INT key AUTO_INCREMENT,
    Person_ID (SELECT Person_ID FROM Test1),
    Card_ID (SELECT Card_ID FROM Test2)
)

最后,我得到一个错误106442000,它告诉我我的语法有一个错误。我想要的是,如果Test1中的Person\u ID是10010,那么Test3中的Person\u ID将是相同的。

您试图做的事情没有意义。如果需要两个表的笛卡尔乘积,可以使用视图:

create view v_table3 as
    select t1.person_id, t2.card_id
    from test1 t1 cross join
         test2 t2;
如果要增加计数器,请使用行号:

编辑:

我突然想到,您可能只想声明外键关系:

CREATE TABLE Test3 (
    ID INT key AUTO_INCREMENT,
    Person_ID int, (SELECT Person_ID FROM Test1),
    Card_ID int,
    foreign key (person_id) references test1(person_id), 
    foreign key (card_id) references test2(card_id)
);
CREATE TABLE Test3 (
    ID INT key AUTO_INCREMENT,
    Person_ID int, (SELECT Person_ID FROM Test1),
    Card_ID int,
    foreign key (person_id) references test1(person_id), 
    foreign key (card_id) references test2(card_id)
);