-3

演算子selectを使用したステートメントクエリに疑問があります。inつまり、期限に従って複数の po 値を取得する必要がある場合です。私がこれを行うと、

select * from table1 where pono in('82200388180','82200388179') and dueno in('001','004')

それは動作します。しかし、1 つの点について明確にする必要があります。私がこのように与えると仮定すると、

select * from table1 where pono in('82200388180','82200388179') and dueno ('001','004')

(1 つの PO に複数の期限番号を指定できます。固有のものはありません)

使い方?1. 利用可能な 001 がない行を返すか、または 2. dueno=001 で pono=82200388180 に対応する行を返します。

オプション 2 のような答えを得る必要があります。ガイドしてください

前もって感謝します。

4

2 に答える 2

2

対応する期日に従って適切な po 値を取得するにはどうすればよいですか。

in句内の位置間に相関関係はありません。

これにより、おそらくあなたが望む結果が得られます。

select *
from table1 
where pono = '1' and dueno = '001' or
      pono = '2' and dueno = '001' 

または、値のペアを使用してチェックするテーブル/一時テーブル/テーブル変数を使用するexistsか、SQL Server 2008 を使用している場合は、このようなことを行うことができます。

select *
from table1 as T1
where exists ( 
             select *
             from (values('1','001'),
                         ('2','001')) as T(pono, dueno)
             where T1.pono = T.pono and
                   T1.dueno = T.dueno
             )

PostgreSQL を使用している場合は、代わりにこれを使用できます。

select *
from table1
where (pono, dueno) in (('1', '001'), ('2', '001'))
于 2013-05-24T06:14:33.997 に答える
0

通常、次のようにします。

select * from table1 where pono in('1','2') and dueno = pono

ただし、あなたの場合、 pono と dueno は異なる形式であるため、直接比較することはできません。することに違い(または利点)はありません

select * from table1 where pono in('1','2') and dueno in('001','001')

に比べ

select * from table1 where pono in('1','2') and dueno ='001'
于 2013-05-24T06:08:43.697 に答える