JOIN, pheonix, 22-Авг-06, 15:00 [смотреть все]есть две таблицы, что за зопрос нужно выполнить чтобы выбралось только то чего нет в правой таблице? [LEFT || RIGHT || INNER] && JOIN не подходит, етсь ли какой-нить другой оператор или синтексис? вообще-то нужна команда обратная INNER, т.е. чтобы нашла все одинаковые записи в левой и правой таблице, но выбрала не это, а обратное, выбрала то чего нет в правой таблице? кто с таким сталкивался? |
- JOIN, shep, 00:54 , 23-Авг-06 (1)
>есть две таблицы, что за зопрос нужно выполнить чтобы выбралось только то >чего нет в правой таблице? [LEFT || RIGHT || INNER] && >JOIN не подходит, етсь ли какой-нить другой оператор или синтексис? вообще-то >нужна команда обратная INNER, т.е. чтобы нашла все одинаковые записи в >левой и правой таблице, но выбрала не это, а обратное, выбрала >то чего нет в правой таблице? кто с таким сталкивался? Очень просто.
SELECT u.`id`, u.`name` FROM `users` u WHERE TRUE AND ( NOT u.`id` IN ( SELECT bu.`id` FROM `banned_users` bu ) ) выбираем юзеров которых нет в таблице забаненых юзеров. P.S.: Зачем делать отдельную таблицу banned_users вместо поля banned в таблице users, спросите Вы? - По разным причинам.
- JOIN, pheonix, 09:46 , 23-Авг-06 (2)
>SELECT u.`id`, u.`name` >FROM `users` u >WHERE TRUE >AND ( NOT u.`id` IN ( > SELECT bu.`id` > FROM `banned_users` bu > ) > ) >вообще ничего не понял!!! у меня есть две таблицы `test1` и `test2` в них есть одинаковое поле `common` как выбрать все записи из `test1` которых нет в `test2`?
- JOIN, pheonix, 10:50 , 23-Авг-06 (3)
решение select * from test1 LEFT JOIN test2 using(common) where id is null; вот и всё без всякой мути которая сверху с условиями понаписана
|