我的INSERT语句如下;
INSERT INTO StudentRecord ( Name, schoolid, age)
VALUES ('Hello', 1, '12')
我的数据库中有2个表;
1 -
School
,它有以下字段;
id, schoolName
第二 -
StudentRecord
,它有以下文件;
studentid, studentName, schoolid, age
现在我要做的是将Schools Name而不是schoolId添加到insert语句中,并将其保存在StudentRecord
表中。我怎么能这样做?
例如,我添加1
作为schoolId的地方应该是学校的名称。
答案 0 :(得分:1)
您可以使用insert ... select
代替insert ... values
:
insert StudentRecord
(Name, Schoolid, Age)
select @StudentName
, id
, @StudentAge
from Schools
where schoolName = @SchoolName
我添加了变量(例如@SchoolName
),您可以在其中输入值。
答案 1 :(得分:1)
对于OP ....有一些数据库理论你有点模糊,你需要在人们给你的答案完全理解之前清楚地理解它。
在插入后不要查看原始数据表,并期望每个字段都是数据的文本表示。您希望在插入数据后查看数据,使用查询将彼此连接到相应的表以便以可读格式显示数据。您不要以可读格式插入它。您插入,然后以可读格式查询和查看它。
您使用学校名称代替ID来对数据库进行非规范化。规范化是保持系统冗余和数据库性能最佳的关键概念。例如。一次更改一次会更改使用它的所有记录。理解规范化将使您了解为什么这是一个糟糕的解决方案。
这里有几个链接给你。
答案 2 :(得分:0)
将schoolid更改为schoolName。
使用schoolid检索schoolName。 (使用SELECT)
检索后,您现在可以将学校名称存储在那里。
答案 3 :(得分:0)
你必须修改你的表..
ALTER TABLE StudentRecord ALTER COLUMN schoolid varchar(100)
现在只需输入学校名称代替学校ID!
答案 4 :(得分:-1)
不确定为什么要这样做,因为您要对结构进行去标准化。您也不应该存储age
,因为它会更改并且是计算字段。存储出生日期。
但是这样的事情可能有用:
INSERT INTO someTable
SELECT a.studentId, a.studentName, b.schoolName, a.age
FROM StudentRecord a
INNER JOIN School b ON b.id = a.schoolid