
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
08.12.2014, 14:13:47
|
|||
|---|---|---|---|
|
|||
Логика работы Mysql |
|||
|
#18+
Все привет. суть вопроса : есть запрос к примеру: 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 это делает. Объясните пожалуйста почему так??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
08.12.2014, 14:53:44
|
|||
|---|---|---|---|
Логика работы Mysql |
|||
|
#18+
Формулируйте задачу, а не свои попытки её решить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
08.12.2014, 15:04:30
|
|||
|---|---|---|---|
|
|||
Логика работы Mysql |
|||
|
#18+
оке. задача: понять почему в запросе : 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? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
08.12.2014, 15:50:03
|
|||
|---|---|---|---|
Логика работы Mysql |
|||
|
#18+
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, они на процесс исключения дубликатов никак не влияют. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=47&tablet=1&tid=1833829]: |
0ms |
get settings: |
9ms |
get forum list: |
10ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
60ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
27ms |
get tp. blocked users: |
1ms |
| others: | 242ms |
| total: | 365ms |

| 0 / 0 |
