За последние 24 часа нас посетили 18029 программистов и 1652 робота. Сейчас ищут 1760 программистов ...

Помогите выбрать разность таблиц

Тема в разделе "MySQL", создана пользователем servitpol, 5 апр 2017.

  1. servitpol

    servitpol Новичок

    С нами с:
    17 авг 2016
    Сообщения:
    63
    Симпатии:
    3
    День добрый! Ребят, помогите пожалуйста составить запрос для такой задачи:
    есть 2 таблицы, в одной есть id и в другой есть те же id, но не все. Нужно найти те id которых не хватает. Пытался делать так:
    Код (Text):
    1. SELECT t1.id
    2. FROM table1 t1
    3. JOIN table2 t2 ON t1.id != t2.id
    4. WHERE  t1.type = 'admin'
    Код (Text):
    1. SELECT id FROM table1 WHERE type = 'admin'
    2. EXCEPT
    3. SELECT id FROM table2 WHERE type = 'admin'
    Код (Text):
    1. SELECT id
    2. FROM table1
    3. WHERE NOT EXISTS(
    4. SELECT id FROM table2 WHERE type = 'admin')
    И еще кучу вариантов которые не работают(((
     
  2. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.797
    Симпатии:
    1.331
    Адрес:
    Лень
    SELECT t1.id
    FROM table1 t1
    JOIN table2 t2 ON t1.id != t2.id
    WHERE t1.type = 'admin'

    t1.id != t2.id

    местами поменяй, ты же сравниваешь результат с таблицы1 на таблицу2, а не наоборот
    --- Добавлено ---
    + смысл запроса если результат будет с первой таблицы выводится, зачем тогда вторая? :confused:
     
  3. retvizan

    retvizan Активный пользователь

    С нами с:
    27 дек 2013
    Сообщения:
    68
    Симпатии:
    22
    SELECT t1.id
    FROM table1 t1
    left JOIN table2 t2 ON t1.id = t2.id
    WHERE t1.type = 'admin' and t2.id is null
    --- Добавлено ---
    что изменится от перестановки мест?
     
  4. servitpol

    servitpol Новичок

    С нами с:
    17 авг 2016
    Сообщения:
    63
    Симпатии:
    3
    Выдает 65 тыс результатов (декартово произведение), когда по факту должно выдать порядка 10-100. Я наверное забыл сделать одно уточнение: таблицы между собой не связаны, т.е. это две абсолютно разных таблицы, просто в них есть одинаковые значения.
    --- Добавлено ---
    Сделал так, вроде работает:
    Код (Text):
    1. SELECT id FROM table1 WHERE id NOT IN (SELECT id FROM table2 WHERE type = 'admin') AND type = 'admin'