我搞错了-

专栏的员工.EmpID在 Select 列表中无效,因为它是


select loc.LocationID, emp.EmpID
from Employee as emp full join Location as loc 
on emp.LocationID = loc.LocationID
group by loc.LocationID 

这种情况符合比尔·卡温给出的答案.

修正上述内容,符合ExactaBox的回答-

select loc.LocationID, count(emp.EmpID) -- not count(*), don't want to count nulls
from Employee as emp full join Location as loc 
on emp.LocationID = loc.LocationID
group by loc.LocationID 

ORIGINAL QUESTION -

对于SQL查询-

select *
from Employee as emp full join Location as loc 
on emp.LocationID = loc.LocationID
group by (loc.LocationID)

我不明白为什么我会犯这个错误.我所要做的就是将这些表连接起来,然后将特定位置的所有员工分组在一起.

I think I have a partial explanation for my own question. Tell me if its ok -

要将在同一地点工作的所有员工分组,我们必须首先提到LocationID.

那么,我们不能/不提它旁边的每个员工ID.相反,我们提到的是该地点的员工总数.我不确定,我们为什么要用后一种方式.

错误的100条款部分的解释是什么?

推荐答案

假设我有下表T:

a   b
--------
1   abc
1   def
1   ghi
2   jkl
2   mno
2   pqr

我做以下查询:

SELECT a, b
FROM T
GROUP BY a

输出应该有两行,一行为a=1,第二行为a=2.

但这两行中的每一行都应该显示什么值呢?每种情况下都有三种可能,查询中没有任何内容明确说明在每组中为b Select 哪个值.这是模棱两可的.

这演示了single-value rule,它禁止运行GROUP BY查询时获得未定义的结果,并且在select列表中包含既不属于分组条件,也不出现在聚合函数(SUM、MIN、MAX等)中的任何列.

修复它可能是这样的:

SELECT a, MAX(b) AS x
FROM T
GROUP BY a

现在很明显,您希望得到以下结果:

a   x
--------
1   ghi
2   pqr

Sql相关问答推荐

如何编写SQL查询,在2024年每月的第一个日期输出货币?

表名数组

基于模式或其他行集的数据复制

在请求结束之前,PostgreSQL不会考虑使用中的删除

计算分段的总权重

从依赖于其他表的值的XREF表中的值分组获得正确的计数?

如何利用单列历史SQLsnowflake获得合并结果

UPDATE查询中的乐观锁

在SQL查询中使用COALESS

过go 四周未填充的数据,即W50,51,52-SQL

Redshift PL/pgSQL循环中的参数化列名

SQL仅返回第一个字母在A-Z之间的值

SQL OR子句如何在JOINON查询中工作?

Postgresql - WHERE 中的 MAX 标准 - 初学者问题

group by 并根据同表中其他列的某些条件获取 group by 中的某一列值

删除对 JSON 数据的未解析引用的 SQL71502 警告

删除重复记录但保留最新的SQL查询

在Snowflake中如何使用SQL对版本字符串进行排序?

过滤具有一对多关系的两个表之间的数据

SELECT 用于 Parent、Children 和 ORDER BY [Order] 列