есть две таблицы, что за зопрос нужно выполнить чтобы выбралось только то чего нет в правой таблице? [LEFT || RIGHT || INNER] && JOIN не подходит, етсь ли какой-нить другой оператор или синтексис? вообще-то нужна команда обратная INNER, т.е. чтобы нашла все одинаковые записи в левой и правой таблице, но выбрала не это, а обратное, выбрала то чего нет в правой таблице? кто с таким сталкивался?
>есть две таблицы, что за зопрос нужно выполнить чтобы выбралось только то
>чего нет в правой таблице? [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, спросите Вы?
- По разным причинам.
>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`?
решение
select * from test1 LEFT JOIN test2 using(common) where id is null;
вот и всё без всякой мути которая сверху с условиями понаписана