Informix "A syntax error has occurred." 使用子查询时
Informix "A syntax error has occurred." when using subquery
以下两个查询有效:
SELECT SUM(actdtmahi+actdtmahd+actdtmahv) AS saldo
FROM actdt
WHERE actdtcage=116437 AND actdtmrcb=0 AND actdtccic=55204
和
SELECT FIRST 1 acbccccic FROM acbcc
WhERE (acbccscic=4 OR acbccscic=5) AND
acbccccic IN (SELECT acbcaccic FROM acbca WHERE acbcacage=116437)
ORDER BY acbccccic DESC
但是,如果我尝试在一个查询中加入它们,我会得到 "A syntax error has occurred"
SELECT SUM(actdtmahi+actdtmahd+actdtmahv) AS saldo
FROM actdt
WHERE actdtcage=116437 AND actdtmrcb=0 AND
actdtccic IN (SELECT FIRST 1 acbccccic FROM acbcc
WHERE (acbccscic=4 OR acbccscic=5) AND
acbccccic IN (SELECT acbcaccic FROM acbca WHERE acbcacage=116437)
ORDER BY acbccccic DESC)
为什么?
我认为 Informix 不允许在子查询中使用 FIRST
。请尝试 MAX()
:
actdtccic IN (SELECT MAX(acbccccic)
FROM acbcc
WHERE acbccscic IN (4, 5) AND
acbccccic IN (SELECT acbcaccic FROM acbca WHERE acbcacage=116437)
)
此外,您可以使用 =
而不是 IN
。
以下两个查询有效:
SELECT SUM(actdtmahi+actdtmahd+actdtmahv) AS saldo
FROM actdt
WHERE actdtcage=116437 AND actdtmrcb=0 AND actdtccic=55204
和
SELECT FIRST 1 acbccccic FROM acbcc
WhERE (acbccscic=4 OR acbccscic=5) AND
acbccccic IN (SELECT acbcaccic FROM acbca WHERE acbcacage=116437)
ORDER BY acbccccic DESC
但是,如果我尝试在一个查询中加入它们,我会得到 "A syntax error has occurred"
SELECT SUM(actdtmahi+actdtmahd+actdtmahv) AS saldo
FROM actdt
WHERE actdtcage=116437 AND actdtmrcb=0 AND
actdtccic IN (SELECT FIRST 1 acbccccic FROM acbcc
WHERE (acbccscic=4 OR acbccscic=5) AND
acbccccic IN (SELECT acbcaccic FROM acbca WHERE acbcacage=116437)
ORDER BY acbccccic DESC)
为什么?
我认为 Informix 不允许在子查询中使用 FIRST
。请尝试 MAX()
:
actdtccic IN (SELECT MAX(acbccccic)
FROM acbcc
WHERE acbccscic IN (4, 5) AND
acbccccic IN (SELECT acbcaccic FROM acbca WHERE acbcacage=116437)
)
此外,您可以使用 =
而不是 IN
。