Задавайте вопросы, мы ответим
Вы не зашли.
Приветствую!
Есть две задачи. Подскажите пожалуйста, как лучше всего их реализовать:
1. Есть две таблицы t1 и t2, у них есть одно поле name и в нем есть какие-то числа. Какой запрос нужно написать, чтобы получить значения, которые есть в t1, но нет в t2 и наоборот? Я так понимаю нужно использовать JOIN или через NOT IN?
2. Есть таблица tab и в ней два поля name1 и name2 с произвольными данными. Как поменять местами данные у этих двух полей?
Неактивен
Здравствуйте.
1) Ну да, либо
select name from t1 where name not in (select name from t2)
union
select name from t2 where name not in (select name from t1)
(Что хуже)
либо
SELECT t1.name FROM t1 join t2 using(name);
(что лучше)
2) set @tmp='';UPDATE t_5678 SET n1=(@tmp:=n1), n1=n2, n2=@tmp;
Неактивен
1)
UNCROSS FULL OUTER JOIN
Неактивен
deadka
По первому все круто!
А вот по второму пункту не получается так. В результате такого запроса в обоих полях будут одинаковые значения, т.е. какого-то одного поля
Отредактированно Garik (02.05.2012 23:13:52)
Неактивен
evgeny
По 1-му работает. А на счет второго не понял что за id=4 и id=5
Неактивен
Garik написал:
deadka
По первому все круто!
А вот по второму пункту не получается так. В результате такого запроса в обоих полях будут одинаковые значения, т.е. какого-то одного поля
Да, во-втором погорячился. Вот так работает:
set @tmp='';UPDATE t_5678 SET n1=(@tmp:=n1), n1=n2, n2=@tmp;
А по первому оба варианта работают?
Неактивен
deadka написал:
Да, во-втором погорячился. Вот так работает:
set @tmp='';UPDATE t_5678 SET n1=(@tmp:=n1), n1=n2, n2=@tmp;
Ага, сейчас все норм!
deadka написал:
А по первому оба варианта работают?
Ну первый выдает те поля, которые отличаются, а второй общие (тоже пригодится).
Спасибо за помощь!
Неактивен