- SQL code
select CURRENCY_CenterUnit.ControlCord, CURRENCY_CenterUnit.BarCord, CURRENCY_Center.Title, CURRENCY_Center.Author, CURRENCY_Center.Publisher, CURRENCY_Center.ISBN, CURRENCY_Center.PublishDate, CURRENCY_CenterUnit.Price, CURRENCY_Center.LIBNum, CURRENCY_Center.LIBCord, CURRENCY_CenterUnit.LawInfo, count(distinct CURRENCY_CenterUnit.ControlCord) as 本数from CURRENCY_CenterUnit,CURRENCY_CenterGROUP BY CURRENCY_CenterUnit.ControlCordHAVING CURRENCY_CenterUnit.ControlCord=(select ControlCord from CURRENCY_CenterUnit where lawinfo='光盘库')
帮我看下这个哪里不对
报错显示:列 'CURRENCY_CenterUnit.BarCord' 在选择列表中无效,因为该列既不包含在聚合函数中,也不包含在 GROUP BY 子句中。
---------------------------------
其实就是这样的:
表A有多个列,表B有多个列
两个表都有对应的ControlCord列
表B的ControlCord列有重复,需要统计重复个数
同时显示表A和表B的几个列和显示表B的ControlCord列重复次数。这样的SQL查询应该怎么写呢?
------解决方案--------------------
- SQL code
SELECT CURRENCY_CenterUnit.ControlCord , CURRENCY_CenterUnit.BarCord , CURRENCY_Center.Title , CURRENCY_Center.Author , CURRENCY_Center.Publisher , CURRENCY_Center.ISBN , CURRENCY_Center.PublishDate , CURRENCY_CenterUnit.Price , CURRENCY_Center.LIBNum , CURRENCY_Center.LIBCord , CURRENCY_CenterUnit.LawInfo , COUNT(DISTINCT CURRENCY_CenterUnit.ControlCord) AS 本数FROM CURRENCY_CenterUnit , CURRENCY_CenterGROUP BY CURRENCY_CenterUnit.ControlCord , CURRENCY_CenterUnit.BarCord , CURRENCY_Center.Title , CURRENCY_Center.Author , CURRENCY_Center.Publisher , CURRENCY_Center.ISBN , CURRENCY_Center.PublishDate , CURRENCY_CenterUnit.Price , CURRENCY_Center.LIBNum , CURRENCY_Center.LIBCord , CURRENCY_CenterUnit.LawInfoHAVING CURRENCY_CenterUnit.ControlCord = ( SELECT ControlCord FROM CURRENCY_CenterUnit WHERE lawinfo = '光盘库' )