mysql - 如何使用现有表中的列创建新表?
问题描述
我有两个表,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 将是相同的。
解决方案
你试图做的事情没有意义。如果您想要两个表的笛卡尔积,您可以使用视图:
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)
);
推荐阅读
- c++ - 如何从 C++ 中 O(n) 中的关联 NxN 矩阵中删除行和列?
- swift - 在垂直堆栈视图中水平添加按钮
- python - 如何在 Python 设置脚本中要求 importlib.resources
- python - 如何使用外键和内联创建表单
- python - Pandas DateOffset 复制其他列
- javascript - 使用 JavaScript 在页面加载时打开特定选项卡以“单击”带有 2 个选项卡式菜单
- java - java中If语句不断出错
- sql - Redshift 查询计划器和视图
- swift - 返回 FCM 令牌以存储在变量中(带有 Firebase 的 Swift 5)
- java - 以前的日期和现在的日期