Объединить проблемы с SQL - PullRequest
0 голосов
/ 13 июня 2019

Я пытаюсь объединить две таблицы

NAME    AGE SALARY      CITY
Mike    29  42000.00    SAN BERNARDINO
Chris   28  52000.00    FRESNO
Shawn   27  35000.00    SACRAMENTO
Chris   28  52000.00    FRESNO

ID  NAME    AGE SALARY  CITY
1   NULL    NULL    NULL    NULL
2   NULL    NULL    NULL    NULL
3   NULL    NULL    NULL    NULL
4   NULL    NULL    NULL    NULL

Я хочу, чтобы конечный результат выглядел следующим образом

ID  NAME    AGE SALARY      CITY
1   Mike    29  42000.00    SAN BERNARDINO
2   Chris   28  52000.00    FRESNO
3   Shawn   27  35000.00    SACRAMENTO
4   Chris   28  52000.00    FRESNO


Instead it looks like this below

ID  NAME    AGE SALARY  CITY
1   NULL    NULL    NULL    NULL
2   NULL    NULL    NULL    NULL
3   NULL    NULL    NULL    NULL
4   NULL    NULL    NULL    NULL
NULL    Mike    29  42000.00    SAN BERNARDINO
NULL    Chris   28  52000.00    FRESNO
NULL    Shawn   27  35000.00    SACRAMENTO
NULL    Chris   28  52000.00    FRESNO

Я дошел до этого как мой лучший результат на данный момент, используя опцию insert into, и мне было интересно. Я знаю, что мог бы просто использовать update или что-то еще, чтобы сделать это один за другим, но я не думаю, что это было бы здорово для большого стола. Я сделал базу данных без первичного ключа и просто смотрел, как я могу это исправить в основном.

INSERT INTO SAMPLE (NAME, AGE, SALARY, CITY)
SELECT NAME, AGE, SALARY, CITY
FROM SAMPLE2

Я не уверен, что изменить в коде или как это сделать.

РЕДАКТИРОВАТЬ: Я даже не могу использовать этот сайт правильно разорвать ..

Ответы [ 2 ]

1 голос
/ 13 июня 2019

Если вы просто хотите присвоить id вашим строкам, лучше подходить примерно так:

with data as (
  select 'Mike' as NAME,   29 AS AGE, 42000.00 AS SALARY, 'SAN BERNARDINO' AS CITY union all
  select 'Chris',28,52000.00,'FRESNO' union all
  select 'Shawn',27,35000.00,'SACRAMENTO' union all
  select 'Chris',28,52000.00,'FRESNO'
)
select 
  row_number() over (partition by null) as ID,
  d.*
from data d
0 голосов
/ 13 июня 2019

Вы можете искусственно создать ID с помощью функции row_number() для SAMPLE2 и обновить SAMPLE.

 with cte as (
    select
        *,
        ROW_NUMBER() over (order by CITY) as nr
    from SAMPLE2
)
update SAMPLE s
join cte c
    on s.ID = c.nr
set  s.NAME = c.NAME
    ,s.AGE = c.AGE
    ,s.SALARY = c.SALARY
    ,s.CITY = c.CITY;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...