加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

SQL Server Compact Edition中的子查询

发布时间:2020-12-12 16:24:24 所属栏目:MsSql教程 来源:网络整理
导读:我试图在SQL Server CE数据库中执行此操作,但数据库引擎会报告错误. SELECT C.guid,C.name,C.updated,C.hddsize,C.hddavailable,C.hddfree,C.ramsize,C.profiles,C.cpu,(SELECT COUNT(D.id) AS numprogs FROM ComputerData AS D WHERE D.computer_id = C.id)
我试图在SQL Server CE数据库中执行此操作,但数据库引擎会报告错误.
SELECT  C.guid,C.name,C.updated,C.hddsize,C.hddavailable,C.hddfree,C.ramsize,C.profiles,C.cpu,(SELECT COUNT(D.id) AS numprogs 
            FROM ComputerData AS D 
            WHERE D.computer_id = C.id) AS numprograms 
FROM Computers AS C;

我被告知SQL Server CE支持子查询.有什么我做错了吗?

解决方法

我在查询中的唯一体验是MySQL,但希望它足够相似.

您的查询对我来说很奇怪,因为您的子查询位于SELECT子句中.我以前从未见过……但显然MySQL支持它.通常子查询来自FROM或LEFT JOIN或JOIN之后.

您的示例很简单,您可以使用LEFT JOIN实现它:

SELECT C.guid,...,COUNT(distinct D.id) as numprogs
FROM Computers AS C
LEFT JOIN ComputerData as D ON D.computer_id = C.id

在这种情况下,LEFT JOIN是要使用的正确连接类型,因为即使D表中没有特定C记录的匹配记录,您的结果集仍将包含该C记录,而numprogs将只为零,因为期待.

如果您确实想使用子查询,请尝试以下方法:

SELECT C.guid,S.numprogs
FROM Computers AS C
LEFT JOIN
(SELECT computer_id,COUNT(*) as numprogs
 FROM ComputerData GROUP BY computer_id) AS S
ON C.id=S.computer_id

我建议简化您的查询,使其成为最简单的查询,但不起作用.然后告诉我们您的数据库引擎返回的特定错误消息.

编辑:我在MySQL chapter about subqueries中找到了,看起来你应该尝试在你的子查询之后删除“as numprograms”子句…也许你没有任何选择在你之后从子查询中命名的列的命名我已经组成了子查询.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读