mysql - 获取 sql 异常并想知道如何正确编写此查询?
问题描述
由于语法错误,我收到此查询的 SQL 异常,并且想知道如何编写此查询?
我在 Java 中使用 MySQL 5 和 spring 来使用这个查询。
SELECT
MAX
(
nivpof_buystock.price*
(
SELECT
no_of_shrs
FROM nivpof_sellstock
WHERE p_id=sellpid
AND AUDIT_DATE_TIME=udate
)
)
INTO acquisition_cost
FROM nivpof_buystock,nivpof_sellstock
WHERE nivpof_buystock.P_ID=sellpid
;
IF
(
(
(
SELECT
MAX(DATE)
FROM nivpof_buystock
WHERE (sc_code=company_code AND STATUS='Y' AND user_id=userid)
)
<'2018-01-31'
)
AND
(
SELECT
DATEDIFF
(
(SELECT MAX(DATE) FROM nivpof_sellstock WHERE (sc_code=company_code AND STATUS='Y' AND user_id=userid)),
(
SELECT
MAX(DATE)
FROM nivpof_buystock
WHERE (sc_code=company_code AND STATUS='Y' AND user_id=userid)
)
)
>365
)
)
THEN
SELECT
MAX
(
SELECT
CLOSE_PRICE
FROM niv_companystockdetails
WHERE
(
sc_code=company_code
AND DATE='2018-01-31'
)
*
(
SELECT
no_of_shrs
FROM nivpof_sellstock
WHERE p_id=sellpid
AND AUDIT_DATE_TIME=udate
)
)
INTO acquisition_cost
FROM nivpof_buystock,nivpof_sellstock
WHERE nivpof_buystock.P_ID=sellpid
ENDIF;
例如buyprice=5,buydate=2017-01-24,selldate=2018-02-25,closeprice 2018-01-31=10。
所以在这里我想检查 (buydate<2018-01-24 AND selldate-buydate>365days AND closepriceof 2018-01-31>buyprice) 然后 buyprice=closepriceof 2018-01-31;
解决方案
通常,java 一次运行一条 SQL 语句,而不是多条(批处理除外)。
如果您查看查询,您会尝试运行多个句子(您看到那里的那些;
吗?),同时还尝试向其中添加一些插入逻辑(IF
/ ENDIF
)。
我建议您单独运行每个 SQL 语句。那应该可以解决问题。
推荐阅读
- spring-boot - org.springframework.boot.actuate.metrics.export.prometheus.PrometheusScrapeEndpoint 上的奇怪格式“java.lang.NoSuchFieldError:INFO 错误”
- magento - 无法更新 installData 中的用户属性
- pandas - 如何根据数据框中未使用 if 条件的值对 14 列进行排序,而不是按行排序?
- quill - 意外的鹅毛笔工具提示外观
- javascript - 节点 JS 错误 canvas.node 不是有效的 Win32 应用程序
- labview - LabVIEW - 如何在for循环中每次迭代后清除数组
- cross-domain - Tampermonkey 是否可以在不同的网站上共享一个存储空间?
- spring-integration-sftp - 忽略或接受文件的最佳实践 - SftpInboundFileSynchronizer 或 MessageHandler
- javascript - 我有一个记事本,每个笔记都有一个标题和主要内容。单击标题时如何使内容出现/消失?
- sql - 使用 Cpanel 连接到 MSSQL 服务器