Oracle SQL Select Where Where等于多个值

时间:2014-07-24 00:06:06

标签: sql oracle select where

非常直接。这句话有什么问题。

SELECT DISTINCT CUST_FNAME "FIRST NAME", CUST_LNAME "LAST NAME", POS_TIME "TIME", POS_DATE "DATE" FROM POS, CUSTOMER
WHERE CUST_NUM = POS_CUST_NUM AND POS_ITEMID = 1 AND POS_ITEMID = 2;

3 个答案:

答案 0 :(得分:1)

我认为您可能希望与BOTH项目1和2相关联的客户。在这种情况下,您可以使用以下内容:

select x.*, pos_time, pos_date
  from (SELECT CUST_NUM, CUST_FNAME, CUST_LNAME
          FROM POS
          join CUSTOMER
            on CUST_NUM = POS_CUST_NUM
         where POS_ITEMID = 1
        intersect
        SELECT CUST_NUM, CUST_FNAME, CUST_LNAME
          FROM POS
          join CUSTOMER
            on CUST_NUM = POS_CUST_NUM
         where POS_ITEMID = 2) x
  join pos
    on x.cust_num = pos.pos_cust_num
 where pos_itemid in (1, 2)

答案 1 :(得分:0)

必须是OR ...列不能具有两次相同的值。

  

SELECT DISTINCT CUST_FNAME“FIRST NAME”,CUST_LNAME“LAST NAME”,POS_TIME“TIME”,POS_DATE“DATE”来自POS,客户   WHERE CUST_NUM = POS_CUST_NUM AND(POS_ITEMID = 1 OR POS_ITEMID = 2);

我在查询中添加了括号。我希望这会有所帮助。

编辑:或者Brian DeMilia在评论中说,在(1,2)中的POS_ITEMID中使用

答案 2 :(得分:0)

不确定,但这可能比Brian在上面做的那样有效。此外,我现在无法访问数据库,因此我的语法可能略有偏差。

select CUST_NUM, CUST_FNAME, CUST_LNAME, pos_time, pos_date
from CUSTOMER c1,POS p1
 where c1.cust_num = p1.pos_cust_num
 and p1.pos_itemid=1
 and exists (select 'x' from 
             pos p2
             where p2.pos_cust_num=p1.pos_cust_num
             and p2.pos_itemid=2)

基本上,给我每个订购商品1的位置以及同一客户订购商品2的记录所在的位置。