Нужно решить проблему с сравнением данных

karen12

Постоялец
Регистрация
26 Фев 2012
Сообщения
108
Реакции
4
Есть статичные данные (числы от 1 до 10), и база данных MYSQL, в котором данные виде чисeл: 1, 3, 4, 5, 7, 8, 9, 10, - тут отсуствуют числа 2 и 6. Нужно сравнить данные из mysql и статичные данные и вывести те числа из статичных данных которые отсуствуют в Mysql.
 
Код:
SELECT * FROM (SELECT 1 AS num UNION ALL
SELECT 2 AS num UNION ALL
SELECT 3 AS num UNION ALL
SELECT 4 AS num UNION ALL
SELECT 5 AS num UNION ALL
SELECT 6 AS num UNION ALL
SELECT 7 AS num UNION ALL
SELECT 8 AS num UNION ALL
SELECT 9 AS num UNION ALL
SELECT 10 AS num) AS set1
WHERE set1.num NOT IN (SELECT num FROM numbers);

через временную таблицу будет изящнее:
Код:
SELECT stat_numbers.num FROM stat_numbers
LEFT JOIN numbers ON stat_numbers.num = numbers.num
WHERE numbers.num IS NULL;
 
Отличное решение Black Hat, я лишь немножко добавлю:
Если в статичных данных нет повторяющихся цифр, либо их повторы не нужно учитывать, то ALL можно убрать и сделать чуть компактнее:
Код:
SELECT * FROM (SELECT 1 AS n UNION SELECT 2 AS n UNION SELECT 3 AS n ... статичные данные) AS t WHERE n NOT IN (SELECT num FROM numbers)
 
Назад
Сверху