Общие > Базы данных
составление запроса
new_coder:
есть одинаковые структуры хранящиеся в двух таблицах
table1
code
name
table2
code
name
как из table1 выбрать строки которых нет в table2 (определяю по code)
немогу составить запрос.
for_i_0:
Вариант:
SELECT * FROM `table1` WHERE `code` NOT IN (SELECT `code` FROM `table2`)
ravshaniy:
[eq, у меня тоже есть вариант )))
предпологаем что пара код name соответствуют в обоих таблицах, ато если это не так то нужно по другому подходить к вопросу.
кстати зачем такой выбор?
--- Код: ---
SELECT * FROM (
SELECT t1.*, t2.`name` as t2_name
FROM `table1`t1 LEFT JOIN `table2` t2 USING (`code`)
) tt
WHERE tt.t2_name IS NULL
--- Конец кода ---
не пробывал конешно, но должно сработать ))
а по другому это так:
--- Код: ---
SELECT * FROM table1
WHERE code NOT IN (
SELECT code
FROM `table1` t1 INNER JOIN `table2` t2
USING (`code`, `name`)
)
--- Конец кода ---
Altaxar:
for_i_0
Решение правильное,
но ошибочное при большой базе данных, выдаст переполнение памяти.
можно так:
SELECT * FROM table1 t1
WHERE (
SELECT 1
FROM table2 t2 where t2.code=t1.code limit 1
) is null
но это долгий вариант.
ravshaniy:
--- Цитировать ---Altaxar:
for_i_0
Решение правильное,
но ошибочное
--- Конец цитаты ---
вобще сильно сказано )))))
честно говоря даже не понял как будет проходить ваш запрос - план запроса каков? интересно?
Навигация
Перейти к полной версии