java - “IN”和 'INNER JOIN' 关键字不适用于数据库

标签 java mysql sql derby

我正在从事我的高级项目,我们正在使用嵌入式 Apache Derby 数据库。我正在尝试从下面的三个表中查询数据,但遇到问题。

 _________________ 
|Customers        | 
|-----------------|  
| *Customer_ID    |  
| LastName        |**
| FirstName       |**
| PhoneNumber     |  
| Street          | 
| City            |      
| State           |                        
| ZipCode         | 
| Note            |
 ----------------- 
 _________________
|Jobs             |
|-----------------|
| *Job_ID         |
| Customer_ID     |
| Address         |
| Date            |
 -----------------
 _________________
|Invoices         |
|-----------------|
| *Job_ID         |**
| Subtotal        |
| TaxPercent      |
| Total           |**
| DateSent        |**
| DateDue         |**
| DatePaid        |**
 -----------------

上表中,(**)表示需要检索的数据。

我相信下面附加的查询应该可以工作,但执行后,我收到一条错误消息:java.sql.SQLSyntaxErrorException:语法错误:遇到“IN”;

如果有人能帮忙,谢谢!

SELECT Customer_ID,
     , Job_ID
     , LastName
     , FirstName
     , Total
     , DateSent
     , DateDue
     , DatePaid
FROM Invoices
     , Customers
WHERE Customer_ID in (
                        SELECT Customer_ID
                        FROM Jobs 
                        WHERE Jobs.Job_ID in (
                                                SELECT Job_ID 
                                                FROM Invoices
                                             )
                     )

更新:我改用 MySQL 作为应用程序,看看是否可以解决问题;它没。我能够在 MySQL 中运行以下查询,但当我从 Java 执行查询时仍然收到错误。

SELECT    Customers.Customer_ID
          ,Jobs.Job_ID
          ,LastName
          ,FirstName
          ,Total
          ,DateSent
          ,DateDue
          ,DatePaid
FROM Jobs INNER JOIN Customers on Customers.Customer_ID = Jobs.Customer_ID
          INNER JOIN Invoices on Jobs.Job_ID = Invoices.Job_ID;

查询可以在 MySQL 中运行但不能在 Java 中运行的原因是什么?在不使用 INNER JOIN 或 IN 的情况下从多个表中选择数据也可以正常工作。

更新2: 我相信我犯了一个愚蠢的错误,没有在关键字和标识符之间留下空格。感谢您的帮助!

最佳答案

我没有发现您的查询有任何问题,您可以使用 JOIN 而不是 IN(在许多情况下它更快)

SELECT j.Customer_ID,j.Job_ID,LastName,FirstName,Total, DateSent, DateDue,DatePaid
FROM Jobs as j inner join Customers as c on c.Curstomer_ID = j.CustomerID
               inner join Invoices as i on j.Job_ID = i.Job_ID

关于java - “IN”和 'INNER JOIN' 关键字不适用于数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42683126/

相关文章:

java - 如何使用 Artemis JMS 管理 API 创建持久队列

java - 在可绘制对象中使用 ?attr/color 时出现滑动错误

java - 将 Arraylist 的平方元素添加到所述 Arraylist

mysql - where 子句中的列 'book-category' 不明确

java - JTable 显示某一日期下的事件列表

mysql - 使用条件从 2 个表中检索数据

java - springmvc 验证包含 userobject 的 httpsession

mysql - 在一个查询中连接多行

php - Mysql定义一个列名,由子内部查询从其他表中选择

mysql - 如何迭代结果集并执行每个语句? (MySQL)