SQL-如何在与另一个表连接后命名和保存查询表?

问题描述 投票:0回答:3

我正在尝试自己练习使用 Microsoft SQL Server Management Studio 2014,但我似乎无法理解如何在表与另一个表连接后命名和保存表。我尝试在网上找到类似的示例,但它们要么没有帮助,要么在我的代码中产生了错误。

这是我的连接表的代码:

CREATE TABLE students (id INTEGER PRIMARY KEY, first_name TEXT, last_name 
TEXT, email TEXT, phone TEXT, birthdate TEXT);

INSERT INTO students (id, first_name, last_name, email, phone, birthdate) 
VALUES (1, 'Peter', 'Rabbit', '[email protected]', '555-6666', '2002-06-24');

INSERT INTO students (id, first_name, last_name, email, phone, birthdate) 
VALUES (2, 'Alice', 'Wonderland', '[email protected]', '555-4444', '2002-
07-04');

CREATE TABLE student_grades (id INTEGER PRIMARY KEY, student_id INTEGER, 
test TEXT, grade INTEGER);

INSERT INTO student_grades (id, student_id, test, grade) VALUES (1, 1, 
'Nutrition', 95);

INSERT INTO student_grades (id, student_id, test, grade) VALUES (2, 2, 
'Nutrition', 92);

INSERT INTO student_grades (id, student_id, test, grade) VALUES (3, 1, 
'Chemistry', 85);

INSERT INTO student_grades (id, student_id, test, grade) VALUES (4, 2, 
'Chemistry', 95);

这是连接表的代码:

SELECT * 
FROM student_grades
JOIN students 
ON student_grades.student_id = students.id

我已经成功地将这两个表连接在一起,但我似乎在尝试命名和保存这个名为 TableA 的新连接表时遇到了麻烦。事情是这样的:

SELECT * INTO TableA
FROM student_grades
JOIN students 
ON student_grades.student_id = students.id

我从结果中得到的是:

Column names in each table must be unique. Column name 'id' in table 
'TableA' is specified more than once.

我不知道为什么会显示此错误。我的语法是否正确但使用了不正确的名称,或者我的语法完全不正确?感谢所有可能的回复。

sql-server
3个回答
0
投票

表中不能有 2 个同名列;在你的情况下[id]。由于student_grades 表中的student_id 与students 表中的id 相同,因此您可以忽略后者。请参阅下面的查询。

SELECT  sg.[id] ,
        sg.[student_id] ,
        sg.[test] ,
        sg.[grade] ,
        s.[first_name] ,
        s.[last_name] ,
        s.[email] ,
        s.[phone] ,
        s.[birthdate]
INTO    TableA
FROM    student_grades sg
        JOIN students s ON sg.student_id = s.id;

0
投票

因为这两个表都有字段名称“id”,所以您必须使用带有“id”字段的别名,如下所示:

SELECT students.id as studentId, first_name, last_name, email, phone, birthdate
,student_grades.id as gradeId, test, grade INTO TableA
FROM student_grades
JOIN students 
ON student_grades.student_id = students.id

0
投票

CTE AS
(从 MIS754A 选择 A。* LEFT JOIN MIS754B B ON A.[帐号]=B.[帐号]) 从 CTE 选择*

与另一个表连接后如何命名和保存表

© www.soinside.com 2019 - 2024. All rights reserved.