自定义SQL报错40001,在navcat可以执行出结果!系统难道对SQL长度限制了么?

DataEase 版本信息
社区版:
版本号:2.10.3
安装部署方式:一键安装
错误信息如下:


在navcat可以执行出结果,难道对SQL长度限制了么?去掉一部分就可以运行,这种的如何处理?

应该不是 SQL 长度的问题,可能是你那段删掉的 SQL 里有一些关键字导致的,可以把完整的 SQL 发出来看看,或者再对完整 SQL 一点点做精简,找出问题。


就是这个传输的长度应该是超出了!所以才会出现错误,语句肯定没问题的

就是超长了,我的SQL是直接从navcat查询中复制出来的,所以错误肯定不存在,执行的时候,发现传输前端加密的长度太长了吧。LS0g5Y6f5aeL5p+l6K+iClNFTEVDVAoJc3Auc2hvcF9uYW1lIGFzICflupfpk7onLAoJU1VNKG91LuWPkei0p+aUtuWFpS10bW9uZXku6YCA6LSn5YWl5bqT6YeR6aKdKSBBUyDokKXkuJrmlLblhaUsCglvdS7lj5HotKfmlLblhaUsCglvdXR0LueJueauiuWNleaUtuWFpSwKCVNVTShvdS7lj5HotKfmlLblhaUgLSBhZi5g6YCA5qy+6YeR6aKdYCkgYXMg5YeP77ya6YCA6LSnICwKCVNVTShvdXR6Yy7mraPlk4HmiJDmnKwtcmUu6YCA6LSn5YWl5bqT5oiQ5pysKSBBUyDokKXkuJrmiJDmnKwsCglvdXR6Yy7mraPlk4HmiJDmnKwsCglvdXR6cC7otaDlk4HmiJDmnKwsCgl0Y29zdC5g5YeP77ya6YCA6LSn5oiQ5pysYCwKCVNVTShvdS7lj5HotKfmlLblhaUgLSB0bW9uZXku6YCA6LSn5YWl5bqT6YeR6aKdKSAtIFNVTShvdXR6Yy7mraPlk4HmiJDmnKwgLSByZS7pgIDotKflhaXlupPmiJDmnKwpIEFTIOaAu+avm+WIqSwKCVJPVU5EKCgoU1VNKG91LuWPkei0p+aUtuWFpSAtIHRtb25leS7pgIDotKflhaXlupPph5Hpop0pIC0gU1VNKG91dHpjLuato+WTgeaIkOacrCAtIHJlLumAgOi0p+WFpeW6k+aIkOacrCkpIC8gU1VNKG91LuWPkei0p+aUtuWFpSAtIHRtb25leS7pgIDotKflhaXlupPph5Hpop0pKSAqIDEwMCwgMikgQVMg5q+b5Yip546HCi0tIAlyZS7pgIDotKflhaXlupPmiJDmnKwsCi0tIAlhZi5g6YCA5qy+6YeR6aKdYApGUk9NCgl3YW5nZGlhbl9zaG9wIHNwCi0tIOWPkei0p+aUtuWFpQoJTEVGVCBKT0lOICgKCVNFTEVDVAoJCXNob3Bfbm8sCgkJc2hvcF9uYW1lLAoJCVNVTSggcmVjZWl2YWJsZSApIEFTICflj5HotKfmlLblhaUnIAoJRlJPTQoJCW91dF9vZGVyIAoJV0hFUkUKCQlzdG9ja291dF9pZCBOT1QgSU4gKCBTRUxFQ1Qgc3RvY2tvdXRfaWQgRlJPTSBvdXRfZGV0YWlsc19saXN0IFdIRVJFIHNwZWNfbm8gPSAnMjAxMDA2NTYwMDAzNycgKSAKCQlBTkQgY29uc2lnbl90aW1lID49ICcyMDI0LTExLTAxIDAwOjAwOjAwJyAKCQlBTkQgY29uc2lnbl90aW1lIDw9ICcyMDI0LTExLTMwIDIzOjU5OjU5JyAKCUdST1VQIEJZCgkJc2hvcF9ubywKCQlzaG9wX25hbWUgCgkpIEFTIG91IE9OIHNwLnNob3Bfbm8gPSBvdS5zaG9wX25vCgktLSDnibnmrorljZXmlLblhaUKCUxFRlQgSk9JTiAoCglTRUxFQ1QKCQlzaG9wX25vLAoJCXNob3BfbmFtZSwKCQlTVU0oIHJlY2VpdmFibGUgKSBBUyAn54m55q6K5Y2V5pS25YWlJyAKCUZST00KCQlvdXRfb2RlciAKCVdIRVJFCgkJc3RvY2tvdXRfaWQgSU4gKCBTRUxFQ1Qgc3RvY2tvdXRfaWQgRlJPTSBvdXRfZGV0YWlsc19saXN0IFdIRVJFIHNwZWNfbm8gPSAnMjAxMDA2NTYwMDAzNycgKSAKCQlBTkQgY29uc2lnbl90aW1lID49ICcyMDI0LTExLTAxIDAwOjAwOjAwJyAKCQlBTkQgY29uc2lnbl90aW1lIDw9ICcyMDI0LTExLTMwIDIzOjU5OjU5JyAKCUdST1VQIEJZCgkJc2hvcF9ubywKCQlzaG9wX25hbWUgCgkpIEFTIG91dHQgT04gc3Auc2hvcF9ubyA9IG91dHQuc2hvcF9ubwoJLS0g5q2j5ZOB5oiQ5pysCglMRUZUIEpPSU4gKAoJU0VMRUNUCgkJb2Quc2hvcF9ubywKCQlvZC5zaG9wX25hbWUsCgkJU1VNKCBsaS50b3RhbF9hbW91bnQgKSBBUyAn5q2j5ZOB5oiQ5pysJyAKCUZST00KCQlvdXRfb2RlciBvZAoJCUxFRlQgSk9JTiBvdXRfZGV0YWlsc19saXN0IGxpIE9OIG9kLnN0b2Nrb3V0X2lkPWxpLnN0b2Nrb3V0X2lkCglXSEVSRQotLSAJCXN0b2Nrb3V0X2lkICBOT1QgSU4gKCBTRUxFQ1Qgc3RvY2tvdXRfaWQgRlJPTSBvdXRfZGV0YWlsc19saXN0IFdIRVJFIHNwZWNfbm8gPSAnMjAxMDA2NTYwMDAzNycgKQoJCWxpLnNwZWNfbm8hPScyMDEwMDY1NjAwMDM3JwoJCUFORCBsaS5naWZ0X3R5cGUhPTEKCQlBTkQgb2QuY29uc2lnbl90aW1lID49ICcyMDI0LTExLTAxIDAwOjAwOjAwJyAKCQlBTkQgb2QuY29uc2lnbl90aW1lIDw9ICcyMDI0LTExLTMwIDIzOjU5OjU5JyAKCUdST1VQIEJZCgkJb2Quc2hvcF9ubywKCQlvZC5zaG9wX25hbWUgCgkpIEFTIG91dHpjIE9OIHNwLnNob3Bfbm8gPSBvdXR6Yy5zaG9wX25vCgoJLS0g6LWg5ZOB5oiQ5pysCglMRUZUIEpPSU4gKAoJU0VMRUNUCgkJb2Quc2hvcF9ubywKCQlvZC5zaG9wX25hbWUsCgkJU1VNKCBsaS50b3RhbF9hbW91bnQgKSBBUyAn6LWg5ZOB5oiQ5pysJyAKCUZST00KCQlvdXRfb2RlciBvZAoJCUxFRlQgSk9JTiBvdXRfZGV0YWlsc19saXN0IGxpIE9OIG9kLnN0b2Nrb3V0X2lkPWxpLnN0b2Nrb3V0X2lkCglXSEVSRQotLSAJCXN0b2Nrb3V0X2lkICBOT1QgSU4gKCBTRUxFQ1Qgc3RvY2tvdXRfaWQgRlJPTSBvdXRfZGV0YWlsc19saXN0IFdIRVJFIHNwZWNfbm8gPSAnMjAxMDA2NTYwMDAzNycgKQoJCWxpLnNwZWNfbm8hPScyMDEwMDY1NjAwMDM3JwoJCUFORCBsaS5naWZ0X3R5cGU9MQoJCUFORCBvZC5jb25zaWduX3RpbWUgPj0gJzIwMjQtMTEtMDEgMDA6MDA6MDAnIAoJCUFORCBvZC5jb25zaWduX3RpbWUgPD0gJzIwMjQtMTEtMzAgMjM6NTk6NTknIAoJR1JPVVAgQlkKCQlvZC5zaG9wX25vLAoJCW9kLnNob3BfbmFtZSAKCSkgQVMgb3V0enAgT04gc3Auc2hvcF9ubyA9IG91dHpwLnNob3Bfbm8KCgktLSDpgIDotKflhaXlupPmiJDmnKwKCUxFRlQgSk9JTiAoCglTRUxFQ1QKCQlzaG9wX25vLAoJCVNVTSggdG90YWxfcHJpY2UgKSBBUyDpgIDotKflhaXlupPmiJDmnKwKCUZST00KCQlyZXR1cm5fb3JkZXIgcm8gCglXSEVSRQoJCU5PVCBFWElTVFMgKCBTRUxFQ1QgMSBGUk9NIHJldHVybl9kZXRhaWxzX2xpc3QgcmRsIFdIRVJFIHJkbC5zdG9ja2luX2lkID0gcm8uc3RvY2tpbl9pZCBBTkQgcmRsLnNwZWNfbm8gPSAnMjAxMDA2NTYwMDAzNycgKSAKCQlBTkQgU1RBVFVTID0gJzgwJyAKCQlBTkQgY2hlY2tfdGltZSA+PSBVTklYX1RJTUVTVEFNUCggJzIwMjQtMTEtMDEgMDA6MDA6MDAnICkgKiAxMDAwIAoJCUFORCBjaGVja190aW1lIDw9IFVOSVhfVElNRVNUQU1QKCAnMjAyNC0xMS0zMCAyMzo1OTo1OScgKSAqIDEwMDAgCgkJQU5EIHByb2Nlc3Nfc3RhdHVzID0gJzkwJyAKCUdST1VQIEJZCgkJc2hvcF9ubywKCQlzaG9wX25hbWUKCikgQVMgcmUgT04gc3Auc2hvcF9ubyA9IHJlLnNob3Bfbm8KCgktLSDpgIDotKflhaXlupPph5Hpop0KCUxFRlQgSk9JTiAoCglTRUxFQ1QKCQlzaG9wX25vLAoJCVNVTSggcmVmdW5kX2Ftb3VudCApIEFTIOmAgOi0p+WFpeW6k+mHkeminQoJRlJPTQoJCXJldHVybl9vcmRlciBybyAKCVdIRVJFCgkJTk9UIEVYSVNUUyAoIFNFTEVDVCAxIEZST00gcmV0dXJuX2RldGFpbHNfbGlzdCByZGwgV0hFUkUgcmRsLnN0b2NraW5faWQgPSByby5zdG9ja2luX2lkIEFORCByZGwuc3BlY19ubyA9ICcyMDEwMDY1NjAwMDM3JyApIAoJCUFORCBTVEFUVVMgPSAnODAnIAoJCUFORCBjaGVja190aW1lID49IFVOSVhfVElNRVNUQU1QKCAnMjAyNC0xMS0wMSAwMDowMDowMCcgKSAqIDEwMDAgCgkJQU5EIGNoZWNrX3RpbWUgPD0gVU5JWF9USU1FU1RBTVAoICcyMDI0LTExLTMwIDIzOjU5OjU5JyApICogMTAwMCAKCQlBTkQgcHJvY2Vzc19zdGF0dXMgPSAnOTAnIAoJR1JPVVAgQlkKCQlzaG9wX25vLAoJCXNob3BfbmFtZQoKKSBBUyB0bW9uZXkgT04gc3Auc2hvcF9ubyA9IHRtb25leS5zaG9wX25vCgoJLS0g5YeP77ya6YCA6LSn5oiQ5pysCglMRUZUIEpPSU4gKAoJU0VMRUNUCgkJc2hvcF9ubywKCQlTVU0oIHRvdGFsX3ByaWNlICkgQVMg5YeP77ya6YCA6LSn5oiQ5pysCglGUk9NCgkJcmV0dXJuX29yZGVyIHJvIAoJV0hFUkUKCQlOT1QgRVhJU1RTICggU0VMRUNUIDEgRlJPTSByZXR1cm5fZGV0YWlsc19saXN0IHJkbCBXSEVSRSByZGwuc3RvY2tpbl9pZCA9IHJvLnN0b2NraW5faWQgQU5EIHJkbC5zcGVjX25vID0gJzIwMTAwNjU2MDAwMzcnICkgCgkJQU5EIFNUQVRVUyA9ICc4MCcgCgkJQU5EIGNoZWNrX3RpbWUgPj0gVU5JWF9USU1FU1RBTVAoICcyMDI0LTExLTAxIDAwOjAwOjAwJyApICogMTAwMCAKCQlBTkQgY2hlY2tfdGltZSA8PSBVTklYX1RJTUVTVEFNUCggJzIwMjQtMTEtMzAgMjM6NTk6NTknICkgKiAxMDAwIAoJCUFORCBwcm9jZXNzX3N0YXR1cyA9ICc5MCcgCglHUk9VUCBCWQoJCXNob3Bfbm8sCgkJc2hvcF9uYW1lCgopIEFTIHRjb3N0IE9OIHNwLnNob3Bfbm8gPSB0Y29zdC5zaG9wX25vCgotLSDljp/lp4vpgIDmrL7ljZXpgIDmrL7ph5Hpop0KTEVGVCBKT0lOICgKCVNFTEVDVAoJCXNob3Bfbm8sCgkJU1VNKCBhY3R1YWxfcmVmdW5kX2Ftb3VudCApIEFTIOmAgOasvumHkeminQoJRlJPTQoJCWFmdGVyc2FsZXNfcmVmdW5kX29yZGVyIAoJV0hFUkUKLS0gCQlOT1QgRVhJU1RTICggU0VMRUNUIDEgRlJPTSByZXR1cm5fZGV0YWlsc19saXN0IHJkbCBXSEVSRSByZGwuc3RvY2tpbl9pZCA9IHJvLnN0b2NraW5faWQgQU5EIHJkbC5zcGVjX25vID0gJzIwMTAwNjU2MDAwMzcnICkgCgkJc3RhdHVzCSA9ICc1JyAKCQlBTkQgbW9kaWZpZWQgPj0gJzIwMjQtMTEtMDEgMDA6MDA6MDAnCgkJQU5EIG1vZGlmaWVkIDw9ICcyMDI0LTExLTMwIDIzOjU5OjU5JwoJR1JPVVAgQlkKCQlzaG9wX25vLAoJCXNob3BfbmFtZQoKKSBBUyBhZiBPTiBzcC5zaG9wX25vID0gYWYuc2hvcF9ubwoKR1JPVVAgQlkKc3AuaWQKT1JERVIgQlkKYWYuYOmAgOasvumHkeminWAgREVTQwoK

sql 解码出来看是完整的,这个没有问题,我看你这里面挺多注释的,你先将注释都去掉试试呢,如果注释都去掉还不行,就按我上面说的一点点的删除看看。

DataEase 的 SQL 校验会更加严格一些,所以确实会有类似的情况发生。

哈哈哈,和我想法一致,我也以为是注释的问题,但是不是的,就是超出了,删除掉一部分后,执行就可以

这个应该如何解决呢·~~~超出的问题,目前卡在这解决不了

就是SQL太长吗

应该跟长度没关系的,比这长的多的 sql 也可以加进去,可能是你删除掉的内容里有不兼容的地方。

就是长度问题,反复测试了啊,删除部分就可以保存,不删除无法保存,就提示error

你的 SQL 中有两个别名分别是 “减:退货成本”和“减:退货”,把这俩用反引号扩起来试试。

-- 原始查询
SELECT
	sp.shop_name as '店铺',
	SUM(ou.发货收入-tmoney.退货入库金额) AS 营业收入,
	ou.发货收入,
	outt.特殊单收入,
	SUM(ou.发货收入 - af.`退款金额`) as `减:退货` ,
	SUM(outzc.正品成本-re.退货入库成本) AS 营业成本,
	outzc.正品成本,
	outzp.赠品成本,
	tcost.`减:退货成本`,
	SUM(ou.发货收入 - tmoney.退货入库金额) - SUM(outzc.正品成本 - re.退货入库成本) AS 总毛利,
	ROUND(((SUM(ou.发货收入 - tmoney.退货入库金额) - SUM(outzc.正品成本 - re.退货入库成本)) / SUM(ou.发货收入 - tmoney.退货入库金额)) * 100, 2) AS 毛利率
-- 	re.退货入库成本,
-- 	af.`退款金额`
FROM
	wangdian_shop sp
-- 发货收入
	LEFT JOIN (
	SELECT
		shop_no,
		shop_name,
		SUM( receivable ) AS '发货收入'
	FROM
		out_oder
	WHERE
		stockout_id NOT IN ( SELECT stockout_id FROM out_details_list WHERE spec_no = '2010065600037' )
		AND consign_time >= '2024-11-01 00:00:00'
		AND consign_time <= '2024-11-30 23:59:59'
	GROUP BY
		shop_no,
		shop_name
	) AS ou ON sp.shop_no = ou.shop_no
	-- 特殊单收入
	LEFT JOIN (
	SELECT
		shop_no,
		shop_name,
		SUM( receivable ) AS '特殊单收入'
	FROM
		out_oder
	WHERE
		stockout_id IN ( SELECT stockout_id FROM out_details_list WHERE spec_no = '2010065600037' )
		AND consign_time >= '2024-11-01 00:00:00'
		AND consign_time <= '2024-11-30 23:59:59'
	GROUP BY
		shop_no,
		shop_name
	) AS outt ON sp.shop_no = outt.shop_no
	-- 正品成本
	LEFT JOIN (
	SELECT
		od.shop_no,
		od.shop_name,
		SUM( li.total_amount ) AS '正品成本'
	FROM
		out_oder od
		LEFT JOIN out_details_list li ON od.stockout_id=li.stockout_id
	WHERE
-- 		stockout_id  NOT IN ( SELECT stockout_id FROM out_details_list WHERE spec_no = '2010065600037' )
		li.spec_no!='2010065600037'
		AND li.gift_type!=1
		AND od.consign_time >= '2024-11-01 00:00:00'
		AND od.consign_time <= '2024-11-30 23:59:59'
	GROUP BY
		od.shop_no,
		od.shop_name
	) AS outzc ON sp.shop_no = outzc.shop_no

	-- 赠品成本
	LEFT JOIN (
	SELECT
		od.shop_no,
		od.shop_name,
		SUM( li.total_amount ) AS '赠品成本'
	FROM
		out_oder od
		LEFT JOIN out_details_list li ON od.stockout_id=li.stockout_id
	WHERE
-- 		stockout_id  NOT IN ( SELECT stockout_id FROM out_details_list WHERE spec_no = '2010065600037' )
		li.spec_no!='2010065600037'
		AND li.gift_type=1
		AND od.consign_time >= '2024-11-01 00:00:00'
		AND od.consign_time <= '2024-11-30 23:59:59'
	GROUP BY
		od.shop_no,
		od.shop_name
	) AS outzp ON sp.shop_no = outzp.shop_no

	-- 退货入库成本
	LEFT JOIN (
	SELECT
		shop_no,
		SUM( total_price ) AS 退货入库成本
	FROM
		return_order ro
	WHERE
		NOT EXISTS ( SELECT 1 FROM return_details_list rdl WHERE rdl.stockin_id = ro.stockin_id AND rdl.spec_no = '2010065600037' )
		AND STATUS = '80'
		AND check_time >= UNIX_TIMESTAMP( '2024-11-01 00:00:00' ) * 1000
		AND check_time <= UNIX_TIMESTAMP( '2024-11-30 23:59:59' ) * 1000
		AND process_status = '90'
	GROUP BY
		shop_no,
		shop_name

) AS re ON sp.shop_no = re.shop_no

	-- 退货入库金额
	LEFT JOIN (
	SELECT
		shop_no,
		SUM( refund_amount ) AS 退货入库金额
	FROM
		return_order ro
	WHERE
		NOT EXISTS ( SELECT 1 FROM return_details_list rdl WHERE rdl.stockin_id = ro.stockin_id AND rdl.spec_no = '2010065600037' )
		AND STATUS = '80'
		AND check_time >= UNIX_TIMESTAMP( '2024-11-01 00:00:00' ) * 1000
		AND check_time <= UNIX_TIMESTAMP( '2024-11-30 23:59:59' ) * 1000
		AND process_status = '90'
	GROUP BY
		shop_no,
		shop_name

) AS tmoney ON sp.shop_no = tmoney.shop_no

	-- 减:退货成本
	LEFT JOIN (
	SELECT
		shop_no,
		SUM( total_price ) AS `减:退货成本`
	FROM
		return_order ro
	WHERE
		NOT EXISTS ( SELECT 1 FROM return_details_list rdl WHERE rdl.stockin_id = ro.stockin_id AND rdl.spec_no = '2010065600037' )
		AND STATUS = '80'
		AND check_time >= UNIX_TIMESTAMP( '2024-11-01 00:00:00' ) * 1000
		AND check_time <= UNIX_TIMESTAMP( '2024-11-30 23:59:59' ) * 1000
		AND process_status = '90'
	GROUP BY
		shop_no,
		shop_name

) AS tcost ON sp.shop_no = tcost.shop_no

-- 原始退款单退款金额
LEFT JOIN (
	SELECT
		shop_no,
		SUM( actual_refund_amount ) AS 退款金额
	FROM
		aftersales_refund_order
	WHERE
-- 		NOT EXISTS ( SELECT 1 FROM return_details_list rdl WHERE rdl.stockin_id = ro.stockin_id AND rdl.spec_no = '2010065600037' )
		status	 = '5'
		AND modified >= '2024-11-01 00:00:00'
		AND modified <= '2024-11-30 23:59:59'
	GROUP BY
		shop_no,
		shop_name

) AS af ON sp.shop_no = af.shop_no

GROUP BY
sp.id
ORDER BY
af.`退款金额` DESC