项目数据库由mysql转为达梦数据库sql语句导致达梦数据库崩溃

问题描述
项目数据库由mysql转为达梦数据库时,在测试模块是项目卡死,再连接达梦数据库连接不上。
解决
经过多次调试原来是sql语句,左联表语法写的错误导致
原代码

SELECT
	om.energyitem_code AS otherEnergyitemCode,
	om.NAME AS other_meter_name,
	thisTable.date_time,
	thisTable.val AS val,
	thisTable.price,
CASE
		WHEN SUM( thisTable.val ) IS NOT NULL 
		AND SUM( thisTable.val ) != 0 
			AND SUM( lastTable.val ) IS NOT NULL 
		AND SUM( lastTable.val ) != 0  
		THEN 	ROUND(( SUM( thisTable.val ) - SUM( lastTable.val )) / SUM( lastTable.val ), 2 )* 100 ELSE NULL 
		END AS basisVal 
	FROM
		( SELECT * FROM base_othermeter WHERE id = '1780144278180093954' ) om
		LEFT JOIN base_energyitem be ON om.energyitem_code = be.id
		LEFT JOIN (
		SELECT
			* 
		FROM
			base_other_energy 
		WHERE
			date_time >= CONCAT( '2024', '-01-01' ) 
		AND date_time < DATE_ADD( CONCAT( '2024', '-01-01' ), INTERVAL '1' YEAR )) thisTable ON thisTable.other_meter_id = om.id
		LEFT JOIN (
		SELECT
			* 
		FROM
			base_other_energy 
		WHERE
			date_time >= DATE_SUB(  '2024' || '-01-01' , INTERVAL '1' YEAR ) 
			AND date_time < CONCAT( '2024', '-01-01' ) 
		) lastTable ON lastTable.other_meter_id = thisTable.other_meter_id 
		AND DATE_ADD( lastTable.date_time, INTERVAL '1' YEAR ) = thisTable.date_time 
	GROUP BY
		om.energyitem_code,
		om.NAME,
		thisTable.date_time,
	thisTable.val,
	thisTable.price

把 AND DATE_ADD( lastTable.date_time, INTERVAL ‘1’ YEAR ) = thisTable.date_time 删除后功能正常

这也警示我以后写sql要写规范,尽量写的mysql、oracle、以及国产数据库语法通用。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值