|
|
|
Логика работы 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:13:47 |
|
||
|
Логика работы Mysql
|
|||
|---|---|---|---|
|
#18+
Формулируйте задачу, а не свои попытки её решить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2014, 14:53:44 |
|
||
|
Логика работы 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:04:30 |
|
||
|
Логика работы 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, они на процесс исключения дубликатов никак не влияют. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2014, 15:50:03 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=38828027&tid=1833829]: |
0ms |
get settings: |
8ms |
get forum list: |
17ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
39ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
52ms |
get tp. blocked users: |
2ms |
| others: | 197ms |
| total: | 334ms |

| 0 / 0 |
