合并SQL问题

时间:2019-06-13 19:30:24

标签: mysql sql merge

我正在尝试合并两个表

def computesha(counter):
        hash = 'somedata'+'otherdata'+str(counter)
        newHash = hashlib.sha1(hash.encode()).hexdigest()     
        if newHash[:9] == '000000000':       
            print(str(newHash))
            print(str(counter))
            return str(newHash), str(counter)   

if __name__ == '__main__':

    d1 = datetime.datetime.now()
    print("Start timestamp" + str(d1))

    manager = multiprocessing.Manager()
    return_dict = manager.dict()

    p = Pool()
    p.map(computesha, range(sys.maxsize) )
    print(return_dict)
    p.close()
    p.join()

    d2 = datetime.datetime.now()  
    print("End timestamp " + str(d2))
    print("Elapsed time: " + str((d2-d1)))    

我希望最终结果如下所示

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

到目前为止,我最终使用insert into选项获得了最好的结果,并且对此感到疑惑。我知道我可以只使用update或某种方式一步一步地完成它,但我认为这对于较大的表来说不是很好。我创建了一个没有主键的数据库,而我只是主要看到如何解决它。

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

我不确定代码中要更改什么或如何更改。

编辑:我什至不能使用此网站。

2 个答案:

答案 0 :(得分:1)

如果您只想为行分配一个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

答案 1 :(得分:0)

您可以使用ID的{​​{1}}函数人为创建row_number()并更新SAMPLE2

SAMPLE
相关问题