这个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 子句中。

...全文
56 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
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

7,785

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧