我试图使用自然连接来连接mySQL中的两个表,这些表具有相同的字段,但在表之间命名不同(我必须使用自然连接 - 我知道它会更容易使用一个不同的联接)。自然连接查找具有相同名称的字段,因此我想将一个表中的列重命名为与另一个表中的列相同的名称。在我的教科书(不是特定于mySQL)中,它表示以下内容应该有效:
SELECT Fname, Lname, Address
FROM (EMPLOYEE NATURAL JOIN
(DEPARTMENT AS DEPT (Dname, Dno, Mssn, Msdate)))
WHERE Dname=‘Research’;
我感兴趣的部分是" DEPARTMENT AS DEPT(Dname,Dno,Mssn,Msdate)" ...但是我无法在mySQL中复制这个部分(它会导致一个错误,表示要检查正确的语法,以便在(Dname,Dno,Mssn,Msdate)附近使用'。有没有办法(简单地说 - 没有嵌套的SELECT / FROM查询)在mySQL中重命名这样的单个列,以便自然连接将列视为等效的?
答案 0 :(得分:1)
这是你在MySQL中创建ALIAS
的方法:
代表FIELD
(或列)和TABLE
SELECT FName `FirstName`, LName `LastName
FROM `TableName` `NewName`
结果:
FirstName || LastName
++++++++++++++++++++++++
records here...
答案 1 :(得分:1)
我们确实需要知道列的名称。我猜您正在加入EMPLOYEE.Dno = DEPARTMENT.Id
,结果集中的Address
来自DEPARTMENT
(否则为什么要加入?):
SELECT Fname, Lname, Address
FROM EMPLOYEE
NATURAL JOIN
(
SELECT Id AS Dno, Dname, Address
FROM DEPARTMENT
) AS DEPT
WHERE Dname = 'Research';
可替换地:
SELECT Fname, Lname, Address
FROM EMPLOYEE
NATURAL JOIN
(
SELECT Id AS Dno, Address
FROM DEPARTMENT
WHERE Dname = 'Research'
) AS DEPT;
答案 2 :(得分:0)
尝试此查询
SELECT Fname, Lname, Address
FROM (EMPLOYEE NATURAL JOIN
(DEPARTMENT AS DEPT (DEPT.Dname, DEPT.Dno, DEPT.Mssn, DEPT.Msdate)))
WHERE DEPT.Dname=‘Research’;