Общие > Базы данных

составление запроса

(1/2) > >>

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
Решение правильное,
но ошибочное
--- Конец цитаты ---

вобще сильно сказано )))))

честно говоря даже не понял как будет проходить ваш запрос - план запроса каков? интересно?

Навигация

[0] Главная страница сообщений

[#] Следующая страница

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 
Перейти к полной версии