2016-01-05 2 views
1

Как я могу объединить 2 таблицы с одинаковыми именами столбцов в 1 таблицу? Что-то вроде этого:SQL-таблицы слияния с соответствующими столбцами

enter image description here

2-я таблица должна заполнить 1-й таблице.

Это так близко, как я получил

SELECT * FROM 
    Animals 
LEFT JOIN Best 
ON Animals.species=Best.species; 

http://sqlfiddle.com/#!5/d0a98/3

Но мне кажется, сцепить 2-й стол там.

Является ли LEFT JOIN действительно правильным способом для этого?

+0

В «Животные» крыса имеет имя Уэстон. В «Лучшем» крыса имеет имя Сэнди. В вашем объединенном примере крыса имеет имя Сэнди. Какую логику вы используете, чтобы определить, какое имя должно оставаться? – lyrisey

+0

Ценности в Best overwrite Животные за исключением while null. – dukevin

ответ

3

Вы должны указать столбцы в SELECT. Тогда вы легко увидите, что все, что вам нужно, это все, что вам нужно, это COALESCE():

SELECT a.price, a.species, COALESCE(b.name, a.name) as name 
FROM Animals a LEFT JOIN 
    Best b 
    ON a.species = b.species; 
+0

Привет @ gordon-linoff, это левый уровень, необходимый с 'COALESCE'? Я пробовал с «INNER», и это трюк. Я купил анализ вашей книги, используя sql ' –

+0

@AndyK. , , «Левое соединение» гарантирует, что вы получите все строки из первой таблицы. –

+0

@GordonLinoff Если в моей таблице было много столбцов, это единственный способ перечислить их все? – dukevin

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