Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 如何根据第一个表中的行数显示第二个表中的位置名称?_Mysql_Sql - Fatal编程技术网

Mysql 如何根据第一个表中的行数显示第二个表中的位置名称?

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

我有两张表“员工”和“职位”

我想写一个查询,显示在表“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 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语法。。。。。。