IN子句中的多列

时间:2017-09-22 09:19:51

标签: sql

我无法在Oracle中运行此查询,因为它不允许在IN子句中使用多个列名。

CURSOR temp_3((VOUCHER_NO IN NUMBER) IS 
           SELECT * 
           FROM INVOICE_ITEM_TAB 
           WHERE INVOICE_ID, PO_REF_NUMBER IN (
              SELECT INVOICE_ID, PO_REF_NUMBER, 
              FROM INVOICE_TAB 
              WHERE VOUCHER_NO_REF IN (
                 SELECT VER_NO 
                 FROM WORK_ORDER_CODING_TAB 
                 WHERE VER_NO=VOUCHER_NO
              )
            )  

有人可以帮助我

2 个答案:

答案 0 :(得分:2)

改为使用exists

   SELECT * 
   FROM INVOICE_ITEM_TAB iit
   WHERE exists
      SELECT null, 
      FROM INVOICE_TAB it
      WHERE 
         iit.INVOICE_ID = it.INVOICE_ID and
         iit.PO_REF_NUMBER = it.PO_REF_NUMBER and
         it.VOUCHER_NO_REF IN (
            SELECT VER_NO 
            FROM WORK_ORDER_CODING_TAB 
            WHERE VER_NO=VOUCHER_NO
      )
    ) 

答案 1 :(得分:0)

我想要你喜欢的东西

从表格中选择*,其中col(从列表中选择ID =' xyz')

**还有一种方式**

从表中选择*(' aa',' bb',' cc')

相关问题