有人能详细解释为什么下面的查询不起作用吗?
select dept_id, distinct job_id from employees
另外,请提供一些有助于理解SQL查询内部工作原理的资源?
例如,如果您的员工表看起来像
Emp_id Dept_id Job_id
1 24 117
2 24 117
3 24 118
4 25 117
如果你想获得每个部门的独特工作列表,首先你应该尝试
SELECT Dept_id, Job_id
FROM Employees
所以结果会像:
24 117
24 117
24 118
25 117
请注意,由于两名员工在一个部门从事相同的工作,现在第"24117"行增加了一倍。因此,DISTINCT将在您的结果中剪切重复的行:
SELECT DISTINCT Dept_id, Job_id
FROM Employees
给出:
24 117
24 118
25 117
但如果你想让DB给你的结果
SELECT Dept_id, DISTINCT Job_id
你的DB将无法猜测你想在117 Job_id的组合中获得的Dept_id到底是什么(选择类似于"24、24或25?")。因此,如果你只想得到不同的job_id和一些dept_id,那么你应该指定你想在结果中看到的dept_id(如果有很多的话)。例如,您可能会得到一个最小dept_id或类似的东西:
SELECT MIN(Dept_id) AS Dept_id, Job_id
FROM Employees
GROUP BY Job_id
结果如下:
24 117
24 118
这一切都是关于确定性和不确定性的。在sql查询中,您应该始终指定您想要的内容。
据我所知,我认为您希望获得所有部门的唯一作业ID。
只需尝试此查询:
SELECT dept_id, job_id FROM employees Group By dept_id, job_id
表
Dept_id|Job_id
1 1
1 2
1 3
1 3
2 2
2 3
2 4
2 4
3 1
3 4
4 1
运行查询,您将得到以下结果。
Dept_id|Job_id
1 1
1 2
1 3
2 2
2 3
2 4
3 1
3 4
4 1