mysql5资源共享

 找回密码
 立即注册
12
返回列表 发新帖
楼主: penguinhzf

[MySQL] 求代码,谢谢

[复制链接]

19

主题

114

帖子

257

积分

中级会员

Rank: 3Rank: 3

积分
257
 楼主| 发表于 2019-7-10 14:43:26 | 显示全部楼层
引用8楼Edmond1023的回复:select
t.fd_Code,t.fd_Name,t.fd_NowPrice,
t1.avg_price,t.fd_NowPrice/t1.avg_pricee_value
from
(select
fd_Code,
fd_Name,
fd_NowPrice
from
(select
fd_Code,
fd_Name,
fd_NowPrice
fromtb_shareinfo
wherefd_UpdateDatebetween'起始时间'and'结束时间'
orderbyfd_UpdateDatedesc)t
groupby
fd_Code,fd_Name)t
leftjoin
(select
fd_Code,
fd_Name,
sum(fd_NowPrice)/count(1)avg_price
fromtb_shareinfo
wherefd_UpdateDatebetween'起始时间'and'结束时间'
groupbyfd_Code,fd_Name
)t1
ont.fd_Code=t1.fd_Code
orderbyt.fd_NowPrice/t1.avg_pricedesclimit10;

还是出现问题,是不是版本不支持呢?
#1270-Illegalmixofcollations(latin1_swedish_ci,IMPLICIT),(utf8_general_ci,COERCIBLE),(utf8_general_ci,COERCIBLE)foroperation'between'

我是用phpnow1.56安装的,版本是
Apache/2.2.16(Win32)PHP/5.2.14
MySQL支持        Yes/clientlibversion5.1.50
回复

使用道具 举报

0

主题

7

帖子

16

积分

新手上路

Rank: 1

积分
16
发表于 2019-7-10 15:31:58 | 显示全部楼层
那你改成大于小于好了
回复

使用道具 举报

0

主题

151

帖子

332

积分

中级会员

Rank: 3Rank: 3

积分
332
发表于 2019-7-10 16:14:51 | 显示全部楼层
楼主你好,出现#1270-Illegalmixofcollations(latin1_swedish_ci,IMPLICIT),(utf8_general_ci,COERCIBLE),(utf8_general_ci,COERCIBLE)foroperation'between'的问题,是你数据库的编码问题,参考下面文档改一下即可
https://blog.csdn.net/Yetmoon/article/details/79941866

另外多说几句
1、mysql安装玩之后进来更改配置文件里面的编码方式为utf8,建数据库时也尽量选用uft8,除非你的数据库没有一点中文,否则多少会出一点和编码相关的问题
2、又是或过于长的sql语句并不是高效率的,向楼上有位仁兄的建议可以适当采纳,先查出部分数据,通过程序得到想要的结果,因为sql的连接速度是慢于程序处理的,尤其是表数据比较多,差距就更加明显。
回复

使用道具 举报

19

主题

114

帖子

257

积分

中级会员

Rank: 3Rank: 3

积分
257
 楼主| 发表于 2019-7-12 14:35:28 | 显示全部楼层
引用13楼文修的回复:楼主你好,出现#1270-Illegalmixofcollations(latin1_swedish_ci,IMPLICIT),(utf8_general_ci,COERCIBLE),(utf8_general_ci,COERCIBLE)foroperation'between'的问题,是你数据库的编码问题,参考下面文档改一下即可
https://blog.csdn.net/Yetmoon/article/details/79941866

另外多说几句
1、mysql安装玩之后进来更改配置文件里面的编码方式为utf8,建数据库时也尽量选用uft8,除非你的数据库没有一点中文,否则多少会出一点和编码相关的问题
2、又是或过于长的sql语句并不是高效率的,向楼上有位仁兄的建议可以适当采纳,先查出部分数据,通过程序得到想要的结果,因为sql的连接速度是慢于程序处理的,尤其是表数据比较多,差距就更加明显。

好的,明白
回复

使用道具 举报

19

主题

114

帖子

257

积分

中级会员

Rank: 3Rank: 3

积分
257
 楼主| 发表于 2019-7-12 14:35:56 | 显示全部楼层
引用11楼Edmond1023的回复:那你改成大于小于好了

好,我试试,感谢你的回复~
回复

使用道具 举报

0

主题

1

帖子

4

积分

新手上路

Rank: 1

积分
4
发表于 2019-7-14 14:39:31 | 显示全部楼层
引用5楼penguinhzf的回复:Quote: 引用4楼Edmond1023的回复:
select
t.fd_Code,t.fd_Name,t.fd_NowPrice,
t1.avg_price,t.fd_NowPrice/t1.avg_pricee_value
(selectt.*
from
(selectfd_Code,fd_Name,fd_NowPrice,
row_number()over(partitionbyfd_Codeorderbyfd_UpdateDatedesc)rn
fromtb_shareinfo
wherefd_UpdateDatebetween'起始时间'and'结束时间'
)t
wheret.rn=1
)t-------当前价格
leftjoin
(
selectfd_Code,fd_Name,
sum(fd_NowPrice)/count(1)avg_price--平均价格
fromtb_shareinfo
wherefd_UpdateDatebetween'起始时间'and'结束时间'
groupbyfd_Code,fd_Name
)t1
ont.fd_Code=t1.fd_Code
orderbyt.fd_NowPrice/t1.avg_pricedesclimit10;

逻辑是t表获取最新的股票价格,t1获取统计平均值,然后关联计算

非常感谢你的回复,但我运行发现抱错,错误如下:
#1064-YouhaveanerrorinyourSQLsyntax;checkthemanualthatcorrespondstoyourMySQLserverversionfortherightsyntaxtousenear'(selectt.*from(selectfd_Code,fd_Name,fd_NowPrice,row_number()over(par'atline4

请问是什么问题导致呢,谢谢~sql语句
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|mysql5.com Inc. ( 闽ICP备17002856号-1 )

GMT+8, 2019-12-8 06:16 , Processed in 0.060218 second(s), 16 queries .

Powered by MySQL5.com X3.4

© 2003-2019 MySQL5.com.

快速回复 返回顶部 返回列表