sql 中的多项选择和比较

Multiple selects and comparisons in sql

String sql = "
    SELECT NAME, 
           SURNAME, 
           ORDERID, 
           CUSTOMERID, 
           PRIORITY, 
           STATUS, 
           DATE, 
           TIME 
    FROM ORDERS O 
    WHERE O.CUSTOMERID IN "
            + "(SELECT LOGGEDIN 
                FROM CUSTOMERS 
                WHERE LOGGEDIN=1)";

我有两个 table,一个叫客户,一个叫订单。在我的客户 table 中,我想检索所有当前登录系统的人,然后将其与我的订单 table 进行匹配,以查看他们当前是否还有任何待处理的订单。这两个 table 都包含一个包含相同值的 customerid 列。但是,我不确定如何在一个语句中使用和执行登录检查。以上是我所做的尝试之一,目前不正确,因为它需要为 customerid 添加一个连接,但我不确定由谁来执行此操作。此外,我使用的 sql 驱动程序是 Apache Derby,以防有人想知道

您几乎已经搞定了 - 至少有一个解决方案...我猜您遇到了一个错误,因为您的子查询中有一个恶意逗号:

String sql = "SELECT NAME, SURNAME, ORDERID, CUSTOMERID, PRIORITY, STATUS, DATE, TIME "
           +  "FROM ORDERS O WHERE O.CUSTOMERID IN (SELECT LOGGEDIN, FROM CUSTOMERS WHERE LOGGEDIN=1)";

您的查询没问题,但您需要在末尾 select "CUSTOMERID"

 ... IN (
 SELECT CUSTOMERID
 FROM CUSTOMERS 
 WHERE LOGGEDIN=1 )

但我建议用户加入。 查看有挂单的用户:

SELECT C.* 
FROM CUSTOMERS C
INNER JOIN ORDERS O 
ON O.CUSTOMERID = C.CUSTOMERID
WHERE C.LOGGEDID = 1
GROUP BY C.CUSTOMERID

按用户查看挂单:

SELECT *
FROM ORDERS O
INNER JOIN CUSTOMER C 
ON O.CUSTOMERID = C.CUSTOMERID AND C.LOGGEDID = 1