2012-05-02 16 views

答えて

3

第1のAND論理である必要があり、例えば何かの後の事:

SELECT 
    column1 
FROM 
    table1 
WHERE 
    ppp=$parameter 
    AND EXISTS 
     (
      SELECT 
       NULL 
      FROM 
       table2 
      WHERE 
       table1.ppp=table2.parameter 
       AND qweqwe<$parameter2 
    ) 
+0

はい。それはあなた自身でそれを試して動作します。 'SELECT 'tut''、' SELECT 1'、 'SELECT NULL'、' SELECT' SOMEOTHER'のどれでも構いません。それは単なる「存在」を書くスタイルです。 linq-to-sqlを使用している場合、実際に 'contains'関数を' SELECT NULL'を使って 'EXISTS'に変換します – Arion

0

2番目のクエリでAND qweqwe<650が必要ですか? このようなたぶん

... AND 650<(SELECT qweqwe FROM table2 WHERE parameter=$parameter2) 
2
SELECT column1 FROM table1 WHERE parameter=$parameter 
AND exists 
(SELECT 1 FROM table2 WHERE table2.parameter=table1.parameter AND table2.qweqwe=$parameter2) 
+1

これは機能しません。 'exist' =' EXISTS'のタイプミスを修正しない場合 – Arion

1

それはあなたのデータに依存します。 以前の回答のように存在を使用することもできますし、結合を使用することもできます。

SELECT column1 FROM table1 
join table2 on table1.ppp=table2.parameter and table2.qweqwe=$parameter2 
where table1.ppp=$parameter 

ほとんどの場合、結合ははるかに高速になります。しかし、table1の各レコードに対してtable2に1つ以上のrecotdがある場合は、distinctを使用する必要があることが分かります。

関連する問題