在 mysql 5.5.25 中使用的正确语法不存在
Correct syntax to use in mysql 5.5.25 for not exists
您好,我正在尝试在 powerbuilder 12 中编写游标来获取一些记录。这是我的查询。
我正在尝试从 trninvhdr table 中获取一些不在第二个 table 中的记录。
SELECT
INV_DATE,
INV_NO,
INV_TYPE,
CUR_CODE,
EXCH_RATE,
usd_rate,
CR_TERM,
DUE_DATE,
bl_date,
TOT_AMT
FROM trninvhdr
WHERE
COMP_CODE ='NFL1' AND
CUST_CODE = 'NLML' AND
INV_TYPE ='F' AND
INV_DATE <= '2016-03-25' AND
NOT EXISTS
(SELECT * FROM trninvoiceavailability WHERE trninvoiceavailability.COMP_CODE = trninvhdr.COMP_CODE
AND trninvoiceavailability.INV_TYPE = trninvhdr.INV_TYPE AND trninvoiceavailability.INV_NO = trninvhdr.INV_NO);
下面是我在程序中的使用方法。
DECLARE lc_retrieve CURSOR FOR
SELECT
trninvhdr.INV_DATE,
trninvhdr.INV_NO,
trninvhdr.INV_TYPE,
trninvhdr.CUR_CODE,
trninvhdr.EXCH_RATE,
trninvhdr.usd_rate,
trninvhdr.CR_TERM,
trninvhdr.DUE_DATE,
trninvhdr.bl_date,
trninvhdr.TOT_AMT
FROM trninvhdr
WHERE
COMP_CODE = :as_comp_code AND
CUST_CODE = :as_cust_code AND
INV_TYPE ='F' AND
INV_DATE <= :as_inv_date )AND
NOT EXISTS (SELECT * FROM trninvoiceavailability
WHERE trninvoiceavailability.COMP_CODE = trninvhdr.COMP_CODE
AND trninvoiceavailability.INV_TYPE = trninvhdr.INV_TYPE AND
trninvoiceavailability.INV_NO = trninvhdr.INV_NO);
open lc_retrieve ;
查询在 mysql 服务器上工作正常,但在程序中它给了我以下错误。
数据库 c0038 SQLSTATE = 3700 MySQL ODBC 5.2 驱动程序 mysql id 5.5.25 您的语法有误。查看与您的 mysql 版本对应的手册,了解在 NOT EXISTS 附近使用的正确语法(SELECT * FROM trninvoiceavailability.... 在第 1 行。
我应该使用什么正确的语法来处理这个查询。
您需要按照以下方式从查询中删除 )-
INV_DATE <= :as_inv_date )AND
应该是INV_DATE <= :as_inv_date AND
我可以在这段代码中看到一个括号...它来自哪里,它的朋友在哪里?
INV_DATE <= :as_inv_date )AND
您好,我正在尝试在 powerbuilder 12 中编写游标来获取一些记录。这是我的查询。 我正在尝试从 trninvhdr table 中获取一些不在第二个 table 中的记录。
SELECT
INV_DATE,
INV_NO,
INV_TYPE,
CUR_CODE,
EXCH_RATE,
usd_rate,
CR_TERM,
DUE_DATE,
bl_date,
TOT_AMT
FROM trninvhdr
WHERE
COMP_CODE ='NFL1' AND
CUST_CODE = 'NLML' AND
INV_TYPE ='F' AND
INV_DATE <= '2016-03-25' AND
NOT EXISTS
(SELECT * FROM trninvoiceavailability WHERE trninvoiceavailability.COMP_CODE = trninvhdr.COMP_CODE
AND trninvoiceavailability.INV_TYPE = trninvhdr.INV_TYPE AND trninvoiceavailability.INV_NO = trninvhdr.INV_NO);
下面是我在程序中的使用方法。
DECLARE lc_retrieve CURSOR FOR
SELECT
trninvhdr.INV_DATE,
trninvhdr.INV_NO,
trninvhdr.INV_TYPE,
trninvhdr.CUR_CODE,
trninvhdr.EXCH_RATE,
trninvhdr.usd_rate,
trninvhdr.CR_TERM,
trninvhdr.DUE_DATE,
trninvhdr.bl_date,
trninvhdr.TOT_AMT
FROM trninvhdr
WHERE
COMP_CODE = :as_comp_code AND
CUST_CODE = :as_cust_code AND
INV_TYPE ='F' AND
INV_DATE <= :as_inv_date )AND
NOT EXISTS (SELECT * FROM trninvoiceavailability
WHERE trninvoiceavailability.COMP_CODE = trninvhdr.COMP_CODE
AND trninvoiceavailability.INV_TYPE = trninvhdr.INV_TYPE AND
trninvoiceavailability.INV_NO = trninvhdr.INV_NO);
open lc_retrieve ;
查询在 mysql 服务器上工作正常,但在程序中它给了我以下错误。
数据库 c0038 SQLSTATE = 3700 MySQL ODBC 5.2 驱动程序 mysql id 5.5.25 您的语法有误。查看与您的 mysql 版本对应的手册,了解在 NOT EXISTS 附近使用的正确语法(SELECT * FROM trninvoiceavailability.... 在第 1 行。
我应该使用什么正确的语法来处理这个查询。
您需要按照以下方式从查询中删除 )-
INV_DATE <= :as_inv_date )AND
应该是INV_DATE <= :as_inv_date AND
我可以在这段代码中看到一个括号...它来自哪里,它的朋友在哪里?
INV_DATE <= :as_inv_date )AND