我有两个表Test1和Test2,并且我想使用作为Test1和Test2的键的列创建另一个表Test3。
我正在尝试找到正确的语法,但不知道如何。 我已经完成了(从Test1中选择SELECT Person_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)
)
所以最后,我得到一个错误1064(42000),它告诉我我的语法有错误。我想要的是,如果Test1中的Person_ID为10010,那么Test3中的Person_ID将会是相同的。
答案 0 :(得分:1)
您试图做的事没有意义。如果要两个表的笛卡尔积,可以使用视图:
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)
);