2012-02-16 4 views
2

Есть таблица с тремя столбцами: col1 является основным INT, col2 & col 3 является UNIQUE и INT.SQL Select Statement для индексированных атрибутов UNIQUE

нужно выбрать те строки, в которых 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); 

сопзЬ может быть любой 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) 

я понял, что по крайней мере один из столбцов должен соответствовать сопзЬ, но не может быть нулевой

+0

Да. Правильно. Один или несколько столбцов должны соответствовать const, но не должны быть равны нулю. – user980411

+0

ОК, так что это должно сделать это – Diego

+0

Почему ответ правильный, поскольку он противоположный вопросу? Cols имеют ** не ** равные const в соответствии с вопросом –

5

Нет, запрос не является правильным. Вот правильный:

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

Update:

Ваш запрос находит все строки, где col2 <> 0 и col3 <> 0 и добавляет все строки, в которых один или несколько столбцов равно Const

+0

Спасибо. Не возражаете ли вы сказать мне, что вопрос, который я дал в основном, ...? – user980411

+0

Обновленный ответ .. –