2015-03-24 4 views
0

Я пытаюсь объединить 2 набора результатов sql в 1. Я не могу их в 1 выбрать, поскольку производительность является огромной проблемой. Так что я хотел бы сделать, это запустить оба из них и объединить результаты в первичный ключ - все в одном запросе.Объединяя 2 оператора выбора в одном запросе в одном столбце

Например.

select a,b,c,d from tablea; 
select d,e,f,g from tableb; 

Как объединить результаты в самом запросе. Опять же, выбор должен быть отдельным.

Выход:

a,b,c,d,e,f,g 
+0

Какова связь между двумя таблицами? –

+0

Они оба разделяют столбец D. – KingKongFrog

+0

«Я пытаюсь объединить 2 набора результатов sql в 1. Я не могу их в 1 выбрать, поскольку производительность - огромная проблема». Как вы ожидаете получить один набор результатов с более чем одним выбором? –

ответ

3

Просто присоединиться на колонке D:

select a, b, c, A.d, e, f, g 
from tablea A 
INNER JOIN tableb B 
    ON A.d = B.d 

Вас мог использовать подзапросы:

SELECT a, b, c, A.d, e, f, g 
FROM 
    (select a,b,c,d from tablea) A 
INNER JOIN 
    (select d,e,f,g from tableb) B 
    ON A.d = B.d 

или, CTE (который является другим способом использования подзапросы):

WITH A AS 
(
    select a,b,c,d from tablea; 
), 
B AS 
(
    select d,e,f,g from tableb; 
) 
SELECT a, b, c, A.d, e, f, g 
FROM A 
INNER JOIN B 
    ON A.d = B.d 

, что мой второй выбор действительно выполняется в среднем на несколько строк и возвращает число для этого ключа. Это очень налогообложение, когда я присоединяюсь к этому столу.

OK Это изменяет ситуацию. Подзапрос или CTE, вероятно, будет вашим лучшим выбором.

+0

и создайте индексы в обеих таблицах столбца D, чтобы значительно повысить производительность. – DWright

+0

Спасибо, но есть ли способ запустить эти отдельные записи отдельно? И затем объединив их. – KingKongFrog

+0

@DStanley Ваше второе решение - именно то, что мне нужно. Спасибо! – KingKongFrog

Смежные вопросы