2012-02-16 6 views
2

3つの列を持つ表があります。col1は1次INT、col2は& col 3はUNIQUEおよびINTです。索引付き属性に対するSQL Select文UNIQUE

IはCOL1、COL2及びCOL3はCONST1に等しいとcol2であり、

COL3がゼロに等しくされていないこれらの行を選択する必要があります。

次のクエリは正しいですか?

:属性の意味のある名前を使用して、値が唯一

illistrativeの目的のためにここに与えています。

SELECT * FROM table WHERE col1 = const OR col2 = const OR col3 = const AND (coll2 <> 0 AND col3 <> 0); 

constが任意のINTが

+2

ことカントと理解テキストには「等しくない」と言うが、あなたのクエリは、 '='と比較しているように見えますか? –

+0

宿題ですか? –

+0

@OlegDok:間違いなく。たとえそれがあったとしても、私はノートから質問をコピーするのではなく、ロジックを誤って見つけようとしました。 – user980411

答えて

1

私はこれをもとに困惑しているものの:

What I basically need to do is to select those rows that match a particular const values, and such that the const value, and/or attribute values is/are not zero 

は私が何をしたいと思うのです:

SELECT * 
FROM table 
WHERE 
(col1 = const1 or col2 = const1 or col3 = const1) and (col1 != 0 and col2 != 0 and col3 are !=0) 

私は列の少なくとも一つがconstとして一致させる必要がありますが、それはゼロ

+0

はい。右。 1つ以上の列はconstと一致する必要がありますが、ゼロであってはなりません。 – user980411

+0

ok、これはそれを行う必要があります – Diego

+0

質問とは正反対の理由で答えが正しいのはなぜですか?コルズは、質問に応じてconstと等しい** **ではありません。 –

5

値することができません、クエリが正しくありません。ここでは正しいものである:

SELECT * 
FROM table 
WHERE 
    const1 IN (col1, col2, col3) 
AND 0 NOT IN (col2, col3) 

更新:

あなたのクエリは、> 0 COL2 <すべての行を検索し、> 0 COL3 <および1つ以上の列がに等しいすべての行を追加しますconstの

+0

ありがとう。私が基本的にしてくれた質問がどういうものか教えていただけますか? – user980411

+0

更新済み回答.. –

関連する問題