Sql server SQL在查询表被另一个表联接后,如何命名和保存查询表?

Sql server SQL在查询表被另一个表联接后,如何命名和保存查询表?,sql-server,Sql Server,我正在尝试自己练习使用Microsoft SQL Server Management Studio 2014,在一个表与另一个表连接后,我似乎很难理解如何命名和保存该表。我试图在网上找到类似的示例,但它们要么没有帮助,要么在我的代码中产生了错误 以下是我的联接表的代码: CREATE TABLE students (id INTEGER PRIMARY KEY, first_name TEXT, last_name TEXT, email TEXT, phone TEXT, birthdate

我正在尝试自己练习使用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', 'peter@rabbit.com', '555-6666', '2002-06-24');

INSERT INTO students (id, first_name, last_name, email, phone, birthdate) 
VALUES (2, 'Alice', 'Wonderland', 'alice@wonderland.com', '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.

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

表中不能有两列名称相同;在你的情况下[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;

因为这两个表的字段名为“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

谢谢你的帮助。我非常感谢,一切都正常运行。