如何在mySQL中同时“别名”表和所有列?

时间:2012-01-27 04:25:26

标签: mysql sql rename

我试图使用自然连接来连接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中重命名这样的单个列,以便自然连接将列视为等效的?

3 个答案:

答案 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’;