【问题标题】:SQL syntax error on WHERE clause using Netbeans IDE / Derby使用 Netbeans IDE / Derby 的 WHERE 子句上的 SQL 语法错误
【发布时间】:2020-04-14 03:16:18
【问题描述】:

下面这行是错误的原因,但我没有发现具体哪里出错了。

PreparedStatement stmt = connection.prepareStatement("SELECT (SEATS - RESERVATIONS) AS AVAIL FROM RESERVATIONS "
                + " CROSS JOIN (SELECT COUNT(FACULTY) WHERE FACULTY = ? AND DATE = ?) "
                + " WHERE SEATS = ?");

接着是错误,

java.sql.SQLSyntaxErrorException: Syntax error: Encountered "WHERE" at line 1, column 93.
at org.apache.derby.client.am.SQLExceptionFactory.getSQLException(Unknown Source)
at org.apache.derby.client.am.SqlException.getSQLException(Unknown Source)
at org.apache.derby.client.am.ClientConnection.prepareStatement(Unknown Source)
at ReservationEntry.reserveRoom(ReservationEntry.java:30)

Reservation Entry 是准备好的语句所在的文件,任何帮助将不胜感激。

【问题讨论】:

  • 样本数据、所需结果和适当的数据库标签都会有所帮助。
  • 您的查询没有意义。请向我们展示示例数据和预期结果,并说明您要完成的工作。

标签: java sql syntax where-clause derby


【解决方案1】:

您需要一个FROM 子句!一些数据库需要它们。可能是这样的:

SELECT (f.SEATS - r.RESERVATIONS) AS AVAIL
FROM RESERVATIONS R CROSS JOIN
     (SELECT COUNT(FACULTY) as SEATS
      FROM <table name goes here>
      WHERE FACULTY = ? AND DATE = ?
     ) F
WHERE SEATS = ?;

不过,除了修复语法错误之外,我怀疑这是否有用。您应该使用示例数据、所需结果和适当的数据库标签提出问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-12-22
    • 1970-01-01
    • 2020-01-14
    • 1970-01-01
    • 1970-01-01
    • 2014-08-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多