我有一个连接到postgresql的Web应用程序。我正在尝试使用准备好的语句从数据库中获取数据,并不断在null或接近null的位置获取语法错误。
以下是我的查询代码段:
PreparedStatement pstmt = conn.prepareStatement("SELECT * "+ "FROM rooms1 o " + "JOIN rooms2 op" +
" ON o.room_id = op.room_id " +"JOIN rooms3 p " +
" ON op.person_id = p.person_id " +
"WHERE o.room_id = ? " +
" ORDER BY o.plate_order ASC;")) {
//Rest of code
此查询在检查测试数据库时工作正常,但是在准备好的语句中使用它时,错误为
Caused by: org.postgresql.util.PSQLException: ERROR: syntax error at or near "null"
position: 54
[从一些研究中,我认为问题出在我的查询上,这也是我第一次编写Postgresql查询。请看一下。
o.room_id =吗?如果呢?为空,因此您必须检查“ o.room_id为空”。您可以通过内联检查此内容,如果
我用***
指示了错误位置54:
SELECT * FROM rooms1 o
JOIN rooms2 op ON o.room_id = ***op.room_id
JOIN rooms3 p ON op.person_id = p.person_id
WHERE o.room_id = ?
ORDER BY o.plate_order ASC
我不完全理解错误消息,但是op.room_id可能为空。
怪异的错误,恕我直言,但尝试左加入
SELECT o.*, op.*, p.* FROM rooms1 o
LEFT JOIN rooms2 op ON o.room_id = op.room_id
LEFT JOIN rooms3 p ON op.person_id = p.person_id
WHERE o.room_id = ?
ORDER BY o.plate_order ASC
(末尾的分号;
是多余的。]