当前位置: 代码迷 >> Sql Server >> SQL 查询最小数据保存为变量,该怎么解决
  详细解决方案

SQL 查询最小数据保存为变量,该怎么解决

热度:58   发布时间:2016-04-24 09:52:24.0
SQL 查询最小数据保存为变量
本帖最后由 azeng5403 于 2014-10-18 23:22:06 编辑
为今天在考考车分配考生,查询出哪辆车上人最少 就分配一个上去、
有张临时表 #CardOnLine 是今天的考车 

Studentinfo的字段 考车号A 默认为NULL 
我是这样子写的
(SELECT 考车号,CNum FROM #CardOnLine LEFT JOIN (SELECT 考车号A,Count(*) as CNum FROM Studentinfo GROUP BY 考车号A) Ta ON Ta.考车号A=#CardOnLine.考车号) ORDER BY CNum

上图中 考车3 为NULL 就说明 考车3 上没有人现在。
到这里 没出问题。
加上一个 TOP 1 那么 SELECT结果集返回的就是 最少人的考车了。这句运行 能返回 考车3 
接近我要的结果了。
(SELECT top 1 考车号 FROM #CardOnLine LEFT JOIN (SELECT 考车号A,Count(*) as CNum FROM Studentinfo GROUP BY 考车号A) Ta ON Ta.考车号A=#CardOnLine.考车号) ORDER BY CNum

我想把这个 返回的值放到一个变量里 然后去 UPDATE 数据
有问题的SQL如下:
declare @chvCNum varchar (10)
SELECT @chvCNum=((SELECT top 1 考车号 FROM #CardOnLine LEFT JOIN (SELECT 考车号A,Count(*) as CNum FROM Studentinfo GROUP BY 考车号A) Ta ON Ta.考车号A=#CardOnLine.考车号) ORDER BY CNum)
print @chvCNum

服务器: 消息 156,级别 15,状态 1,行 2
在关键字 'ORDER' 附近有语法错误。

或者有更好的方法 
相要的效果就是 随机分配考车,
Studentinfo 表 有 字段         准考证明编号 和考车号A 
分配 就是 把 考车号 写到 考车号A 这个字段上去


但每辆考车上的人数最好是平均的。

------解决思路----------------------
改成这样 你的夸号有问题。
declare @chvCNum varchar (10)
SELECT @chvCNum=(SELECT top 1 考车号 FROM #CardOnLine LEFT JOIN (SELECT 考车号A,Count(*) as CNum FROM Studentinfo GROUP BY 考车号A) Ta ON Ta.考车号A=#CardOnLine.考车号ORDER BY CNum)
  相关解决方案