这个SQL查询语句错在哪里?

painus 2002-12-31 09:38:09
oe_table 企业表
e_tax_no e_name
税号 企业名称

op_table表
e_tax_no name p_id
税号 联系人 编号(主键)

下面这个查询就是要出错
SELECT a.e_tax_no AS 税号,a.e_name AS 企业名称,b.name,
max(b.p_id)
FROM oe_table a,op_table b where a.e_tax_no=b.e_tax_no
group by b.e_tax_no
提示为

服务器: 消息 8120,级别 16,状态 1,行 1
列 'a.e_tax_no' 在选择列表中无效,因为该列既不包含在聚合函数中,也不包含在 GROUP BY 子句中。
服务器: 消息 8120,级别 16,状态 1,行 1
列 'a.e_name' 在选择列表中无效,因为该列既不包含在聚合函数中,也不包含在 GROUP BY 子句中。
服务器: 消息 8120,级别 16,状态 1,行 1
列 'b.name' 在选择列表中无效,因为该列既不包含在聚合函数中,也不包含在 GROUP BY 子句中。

...全文
7 点赞 收藏 4
写回复
4 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
duolai 2002-12-31
select * 中 * 字段必须是group by 中的内容
或 count(*) 之类
你的a.* 不在group by 中
因此肯定会错
回复
fling_boy 2002-12-31
SELECT b.e_tax_no AS 税号,max(a.e_name) AS 企业名称,max(b.name),
max(b.p_id)
FROM oe_table a,op_table b where a.e_tax_no=b.e_tax_no
group by b.e_tax_no
回复
ganzhiruogy 2002-12-31
SELECT a.e_tax_no AS 税号,a.e_name AS 企业名称,b.name,
max(b.p_id)
FROM oe_table a,op_table b where a.e_tax_no=b.e_tax_no
order by b.e_tax_no
回复
CityhunterID 2002-12-31
问题的关键是 b 表用了 group by
应该写成:

SELECT a.e_tax_no AS 税号,a.e_name AS 企业名称,b.name,max(b.p_id)
FROM oe_table a,
(SELECT [name],e_tax_no FROM op_table group by name,e_tax_no) b
WHERE a.e_tax_no=b.e_tax_no
回复
发动态
发帖子
VB基础类
创建于2007-09-28

7453

社区成员

VB 基础类
申请成为版主
社区公告
暂无公告