2017-09-25 6 views
0

組み合わせ条件に基づいてレコードをフィルタリングするSQLをコード化する必要があります。 COLUMN_1は、「A」のショーレコードであれば、その後、「100」COLUMN_2あるOR COLUMN_1が「B」であるとあれば、最初の条件が存在しないときに「200」組み合わせ条件に基づいてデータを返すSQLクエリ

select * 
    from tableTmp 
    where 
name="student" 
and ((column_1="A" and column_2 = "100") OR (column_1="B" and column_2 = "200")) 

が、それは我々が望むものを表示しますCOLUMN_2です。最初の条件がある場合は、column_1 = "C"データがまだ表示されますが、クエリは壊れています。

あなたはその理由を知っていますか?リテラルの

+0

サンプルデータを表示できますか? – Siyual

+0

* "column_1 = 'C'データは" * meanと表示されますが、どうして* "クエリが壊れている"ということになりますか?より明確にする必要があります。まず、サンプルデータとサンプル出力を表示し、出力の望ましくない部分を説明します。 – AgapwIesu

+1

'' student "'は列参照であり、(標準)SQLでは文字列定数ではありません。 '' student "という名前の列がない限り、クエリは無効な標準SQLです。どのDBMSを使用していますか? –

答えて

0

使用単一引用符:「C」のCOLUMN_1値は、そのクエリによって返される可能性がどのように私は見ることができないしかし

select * 
from tableTmp 
where name='student' 
and (
    (column_1='A' and column_2 = '100') 
OR (column_1='B' and column_2 = '200') 
) 

Nb。 column_2が数値データ型の場合は、一重引用符は使用しません。

関連する問題