2013-08-01 3 views
1

У меня есть Выбрать что-то вроде этого запросаИсключить результат из MySql запроса

SELECT * FROM table WHERE id = ? 

мне нужно условие к нему, исключающее конкретный результат. if(type = 'tv' and that type's code = '123') затем исключить эту строку из выбранного результата. Поскольку мои навыки SQL не очень сильны, я не уверен, как это сделать.

+0

Не могли бы вы показать свою структуру стола, пожалуйста? Вы можете использовать sqlfiddle.com для создания воспроизводимого примера. –

ответ

5
SELECT * FROM table WHERE id = ? AND not(type = 'tv' and code = '123') 

ли это то, что вы ищете?

Существует разница между type <> 'tv' and code <> '123' и not(type = 'tv' and code = '123')

+0

Ну ... вы уверены? Я понимаю, что OP хочет * исключить * строки, имеющие * оба * 'type = 'tv'' * и *' code =' 123''. –

+0

Не уверен :) .. Вот почему упомянула вторая строка с обоими вариантами использования. в зависимости от того, что подходит, это требование может быть выбрано. Но из его вопроса я понимаю, что когда и только когда оба условия совпадают, он должен игнорировать запись. В этом случае мое первое предположение верно – Akhil

+0

Вот sqlfiddle, сравнивающий 3 ответа http://sqlfiddle.com/#!2/7dc49/3 Это помнит меня [закон Де Моргана] (http://en.wikipedia.org)/wiki/De_Morgan% 27s_laws) 'not (a и b) ⇔ a или b': D –

0

попробовать это

 SELECT * FROM table WHERE id = ? and (type <> 'tv' or code <> 123) 
+0

Будет ли это работать с двумя предложениями WHERE один за другим? –

+0

oyyy у меня есть sunglaces thats why :) –

+0

@StephLocke У вас может быть только одно предложение WHERE для каждого запроса. См. Http://dev.mysql.com/doc/refman/5.0/en/select.html для поддерживаемого синтаксиса. –

0

Ниже приведен пример запроса для вашей проблемы. Если ваш стол имеет названия колом как тип (VARCHAR или VARCHAR2 или CHAR) и код (VARCHAR или VARCHAR2 или CHAR)

SELECT * FROM <table-name> WHERE type NOT IN ('tv') AND code NOT IN ('123');

Смежные вопросы