首页 > 解决方案 > 如何使用现有表中的列创建新表?

问题描述

我有两个表,Test1 和 Test2,我想使用作为 Test1 和 Test2 的键的列创建另一个表 Test3。

我正在尝试找到正确的语法,但无法弄清楚如何。我已经完成了(SELECT Person_ID FROM Test1),但没有奏效。

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)
)

所以最后,我得到一个 ERROR 1064 (42000) ,它告诉我我的语法有错误。我想要的是如果 Test1 中的 Person_ID 是 10010,那么 Test3 中的 Person_ID 将是相同的。

标签: mysqlsql

解决方案


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

create view v_table3 as
    select t1.person_id, t2.card_id
    from test1 t1 cross join
         test2 t2;

如果您想要增加计数器,请使用row_number()

create view v_table3 as
    select row_number() over (order by t1.person_id, t2.card_id) as id,
           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)
);

推荐阅读