Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Логика работы Mysql / 5 сообщений из 5, страница 1 из 1
08.12.2014, 14:13:47
    #38828027
shifrod
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Логика работы Mysql
Все привет. суть вопроса :
есть запрос к примеру:
select * from

((select 'first','second','third','fourth','five') union

(select 'первый',1,'поле1',2,66) union
(select 'второй',2,'поле2',2,66) union

(select 'третий',3,'поле3',1,66) union
(select 'четвертый',4,'поле4',1,66) union
(select 'пятый',5,'поле5',1,66)) as tab

where tab.fourth!=2 and tab.five!=66;

по логике он должен из таблицы tab исключить записи где tab.fourth=2 and tab.five=66...но это не так он не выведет ни одну запись!
если вместо ... where tab.fourth!=2 and tab.five!=66... заменить оператор AND на OR то он исключит записи где tab.fourth=2 and tab.five=66. результат конечно такой какой нужен..но не понимаю как он с OR это делает. Объясните пожалуйста почему так???
...
Рейтинг: 0 / 0
08.12.2014, 14:53:44
    #38828099
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Логика работы Mysql
Формулируйте задачу, а не свои попытки её решить.
...
Рейтинг: 0 / 0
08.12.2014, 15:04:30
    #38828119
shifrod
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Логика работы Mysql
оке. задача: понять почему в запросе :
select * from

((select 'first','second','third','fourth','five') union

(select 'первый',1,'поле1',2,66) union
(select 'второй',2,'поле2',2,66) union

(select 'третий',3,'поле3',1,66) union
(select 'четвертый',4,'поле4',1,66) union
(select 'пятый',5,'поле5',1,66)) as tab

where tab.fourth!=2 and tab.five!=66;

не выведет строк? а при замене and на or выведет. как отрабатывается условие tab.fourth!=2 and tab.five!=66? и
tab.fourth!=2 or tab.five!=66?
...
Рейтинг: 0 / 0
08.12.2014, 15:50:03
    #38828175
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Логика работы Mysql
shifrodВсе привет. суть вопроса :
есть запрос к примеру:
select * from

((select 'first','second','third','fourth','five') union

(select 'первый',1,'поле1',2,66) union
(select 'второй',2,'поле2',2,66) union

(select 'третий',3,'поле3',1,66) union
(select 'четвертый',4,'поле4',1,66) union
(select 'пятый',5,'поле5',1,66)) as tab

where tab.fourth!=2 and tab.five!=66;

по логике он должен из таблицы tab исключить записи где tab.fourth=2 and tab.five=66...но это не так он не выведет ни одну запись!
если вместо ... where tab.fourth!=2 and tab.five!=66...


нет, ничего он не должен. UNION (не ALL) исключает дублирующиеся строки , а у тебя первое поле во всех подзапросах разное.

shifrod заменить оператор AND на OR то он исключит записи где tab.fourth=2 and tab.five=66. результат конечно такой какой нужен..но не понимаю как он с OR это делает. Объясните пожалуйста почему так???

AND и OR ставятся у тебя в WHERE, они на процесс исключения дубликатов никак не влияют.
...
Рейтинг: 0 / 0
08.12.2014, 16:06:23
    #38828191
shifrod
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Логика работы Mysql
во! спасибо. понял:-)
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Логика работы Mysql / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]