我有一个SQL查询。当我在日期数据库上运行此查询时,我得到了返回的结果。但是当我将此查询放入Java(EntityManager)时,我遇到了一个例外:
子查询的SELECT子句中只能声明一个表达式。
你能给我写错什么吗?
SQL查询:
SELECT distinct d.pId
FROM Document d
WHERE d.date>= :date1 AND d.date< :date2 AND d.ro = :ro AND
d.adressId IN (SELECT nvl(a.previd, a.id) id FROM Adress a where a.id= :aid)
答案 0 :(得分:0)
您的查询仅从子查询返回一行,因此似乎不会产生该错误。
将查询更改为exists
是否可以解决问题?
SELECT distinct d.pId
FROM Document d
WHERE d.date >= :date1 AND d.date < :date2 AND d.ro = :ro AND
EXISTS (SELECT 1
FROM Adress a
WHERE a.id = :aid AND
(d.adressId = a.previd OR
(d.adressId = a.id AND a.previd IS NULL)
)
);
答案 1 :(得分:0)
尝试
SELECT distinct d.pId
FROM Document d
WHERE d.date >= :date1 AND d.date < :date2 AND d.ro = :ro AND
d.adressId IN (SELECT nvl(a.previd, a.id) FROM Adress a where a.id = :aid)