小弟刚学SQL就遇到一条语句,难以理解,求各位大侠给解析!

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了小弟刚学SQL就遇到一条语句,难以理解,求各位大侠给解析!相关的知识,希望对你有一定的参考价值。

SELECT
node.account_id,
node.name,
node.acc_num,
node.debit,
node.credit,
node.balance,
(COUNT(parent.name)-1)ASlevel,
node.lft,
node.rgt
FROMaccountsASnode,
accountsASparent
WHEREnode.lftBETWEENparent.lftANDparent.rgt
GROUPBYnode.name
ORDERBYnode.lft;

首先,你这个sql写的有问题,我先给你解释下这个sql吧
这其实就是一个分组查询语句
group by 是分组,它是按照你的node.name来进行分组,order by是排序
按照你的node.lft来进行排序。select后面跟的是你想要查询的数据,from后是表名,
表名后使用as是给表使用一个简短的别名,count()是统计你的parent.name的总和,,
(COUNT(parent.name)-1)AS level,这个的意思是计算出parent.name的总和减去一,
使用一个level这个字段来代表所查询出来的数据
但像你那样写肯定是执行不下去的。这是我修改后的sql
SELECT node.account_id,node.name,node.acc_num,node.debit,node.credit,node.balance,(COUNT(parent.name)-1)AS level,
node.lft,node.rgt
FROM accounts AS node,accounts AS parent WHERE node.lft BETWEEN parent.lft AND parent.rgt
GROUP BY node.account_id,node.name,node.acc_num,node.debit,node.credit,node.balance,node.lft,node.rgt
ORDER BY node.lft;
如有疑问,请联系我追答

count()它是一个聚合函数,主要就是求和,通过这个函数,就可以计算出来parent.name的总和,然后根据业务需要在总和的基础上减去一,使用别名level来表示

参考技术A select里面的
node.account_id,
node.acc_num,
node.debit,
node.credit,
node.balance,
node.lft,
node.rgt
这些东西加在里面有问题;
查的列名只能是groupby 后面的列名和聚合函数
参考技术B 这是一条查询统计个数语句,group by 进行分组 order by 进行升序
你这条语句也有问题group by 后面应该跟查询字段名啊
参考技术C GROUPBY是分组,这样的话,
node.account_id,
node.name
等等都必须出现在GROUPBY后面。

一条sql语句在两个机器上执行速度不一样的问题

今天遇到这样一个问题,在一个服务器上,执行一条两个表嵌套查询的SQL语句,在SQL查询分析器里,执行的很慢,大概要1分钟左右才有结果,其实数据也就100多条,还有几次根本就不出现结果,就在那里查,也查不出来。于是把这个数据库备份,还原到笔记本上,执行同样的语句,立刻就出结果,最多的一次也就是2秒,一般都是1秒左右,而且这个笔记本配置要比服务器差多了,就是不明白为什么,服务器上执行这个语句为何如此的慢,但执行其他语句好像都很正常,没有什么延迟多久的。请教各位,有没有遇到过这样的情况:SQL语句如下:

select * from 车辆甲 a,车辆乙 b where a.id in(select max(id) from 车辆甲 group by 车牌号,车颜色) and convert(datetime,a.出发日期)>='2008-7-31' and convert(datetime,a.出发日期)<='2008-8-14' and a.车牌号=b.车牌号 and a.车颜色=b.车颜色 order by convert(datetime,a.出发日期)

参考技术A 出现这种情况很可能是一下原因:可能你执行SQL的服务器,别人可能正在上面更新数据,如果你的服务器,配置不是很好的话,那么这时 你执行这些SQL时速度会非常的慢,我曾经就出现过这样的情况,你可以尝试一下,那天你公司没什么人的时候你在执行以下SQL你会发现很快的 参考技术B 优化器的结果不同,内存的数据缓存不同。
我想如果你将服务器的SQL服务重启应该差不多了吧本回答被提问者采纳

以上是关于小弟刚学SQL就遇到一条语句,难以理解,求各位大侠给解析!的主要内容,如果未能解决你的问题,请参考以下文章

各位大神,MATLAB中如何将编写M函数文件与Simulink之间相互调用,小弟刚学不久,求指点。最好能详细一点。

SQL中,我想把SQL查询分析器查询出来的结果,导出到EXCEL表格,求各位大侠指点。

java网络通信如何使用字节类传送字节数据

怎么用wordpress做别的网站,请各位大侠赐教,小弟不慎感激?

MS SQL DES数据加密 解密,急求各位大虾帮帮小弟!

各位java大神,小弟跪求一个解决的方案:调用外部接口得到返回值--耗时问题