Mysql 如何根据第一个表中的行数显示第二个表中的位置名称?
我有两张表“员工”和“职位” 我想写一个查询,显示在表“Employees”中最少出现的职位名称。我在“Employees”中有外键“ID\u of\u Position”。 我想出了这样的办法,但可能行不通:Mysql 如何根据第一个表中的行数显示第二个表中的位置名称?,mysql,sql,Mysql,Sql,我有两张表“员工”和“职位” 我想写一个查询,显示在表“Employees”中最少出现的职位名称。我在“Employees”中有外键“ID\u of\u Position”。 我想出了这样的办法,但可能行不通: SELECT Employees.ID_of_Position, Positions.ID_of_Position, Positions.Name_of_Position FROM Positions WHERE Employees.ID_of_Position in (SELECT
SELECT Employees.ID_of_Position, Positions.ID_of_Position, Positions.Name_of_Position
FROM Positions
WHERE Employees.ID_of_Position in (SELECT ID_of_Position
FROM Employees
GROUP BY ID_of_Position
HAVING COUNT(ID_of_Position
)=1)
INNER JOIN Employees ON Positions.ID_of_Position = Employees.ID_of_Position;
正确的语法如下所示:
SELECT e.ID_of_Position, p.ID_of_Position, p.Name_of_Position
FROM Positions p JOIN
Employees e
ON p.ID_of_Position = e.ID_of_Position
WHERE e.ID_of_Position in (SELECT ID_of_Position
FROM Employees
GROUP BY ID_of_Position
HAVING COUNT(ID_of_Position) = 1
);
这并不能回答问题(除非有一个职位只有一名员工),但至少在语法上是正确的
重要的是要了解
SELECT
、FROM
和WHERE
都是SELECT
语句中的子句JOIN
是FROM
子句中的运算符。至少在JOIN之后应该在哪里,并且在末尾有带括号的内容
SELECT Employees.ID_of_Position, Positions.ID_of_Position, Positions.Name_of_Position
FROM Positions
INNER JOIN Employees ON Positions.ID_of_Position = Employees.ID_of_Position;
WHERE Employees.ID_of_Position in (SELECT ID_of_Position
FROM Employees
GROUP BY ID_of_Position
HAVING COUNT(ID_of_Position)=1
)
您使用的是MySql还是Sql Server?他们不一样。请更正您帖子上的标签。很抱歉,我使用mysqlOk,它可以工作,但也会显示ID,如何使它只显示职位名称?使用from仅选择您需要的内容,如选择p.name\u\u位置from。。。。您应该了解一些基本的sql语法。。。。。。