任何版本的SQL都允许这种连接吗?

时间:2011-04-30 11:42:09

标签: mysql sql join

所以这是我们整年都有的外连接的唯一例子,不用说,这是错误的。我完全知道这个命令不能在MySQL上运行,所以我的问题是,这个命令是否在任何版本的SQL上运行?

  

找到每个基于Texax的名称   雇员,以及姓名&   他/她的任何家属的关系   可能有

SELECT Fname, Lname, Dependent_Name, Relationship
FROM EMPLOYEE LEFT JOIN DEPENDENT
WHERE Ssn = Essn
AND Adddress LIKE ‘%TX’

3 个答案:

答案 0 :(得分:3)

在标准SQL中,外部联接(LEFT,RIGHT或FULL)需要ON...USING...。标准SQL还需要单引号 - '%TX',而不是'%TX'。标准SQL 要求您正确拼写列名,但一般来说这是一个好主意。 ; - )

我不会说你的SQL语句不会在任何SQL dbms上运行。我这么久已经这么做了。我见过很多嗯边缘的情况。 (我很确定每个SQL dbms都不符合每个SQL标准的某些部分。)

SELECT Fname, Lname, Dependent_Name, Relationship
FROM EMPLOYEE
LEFT JOIN DEPENDENT ON Ssn = Essn 
WHERE Address LIKE '%TX';

您还可以使用旧的ANSI前语法。

SELECT Fname, Lname, Dependent_Name, Relationship
FROM EMPLOYEE, DEPENDENT
WHERE Ssn = Essn
AND address LIKE '%TX';

对我而言,看起来无论是谁在教你这些东西都试图通过将EMPLOYEE, DEPENDENTLEFT JOIN之间的逗号替换来更新ANSI之前的示例。虽然我可能钦佩努力的经济,但我仍然必须给那个人一个失败的成绩。

答案 1 :(得分:1)

据我所知。它必须是

SELECT Fname, Lname, Dependent_Name, Relationship
FROM EMPLOYEE 
  LEFT JOIN DEPENDENT ON Ssn = Essn
WHERE Adddress LIKE '%TX'

答案 2 :(得分:1)

您有两种选择,例如:

SELECT Fname, Lname, Dependent_Name, Relationship
FROM EMPLOYEE
LEFT JOIN DEPENDENT on Ssn = Essn AND Adddress LIKE ‘%TX’

SELECT Fname, Lname, Dependent_Name, Relationship
FROM EMPLOYEE, DEPENDENT
WHERE Ssn = Essn AND Adddress LIKE ‘%TX’