将(两个表的连接)插入到另一个表中

时间:2013-11-18 01:21:13

标签: php mysql sql subquery

我有两张表,其中包含一些我不需要的东西。一个有关于用户和另一个用户密码的信息。

我有一个新表,它将信息和密码存储在一起。

此外,用户信息表有单独的名字和姓氏字段,我需要将它们组合起来,将它们放在“名称”列中,并在它们之间添加一个空格。

我需要在不中断(修改)任何旧表的情况下执行此操作。

我还需要能够在id列中添加一个整数值。

我认为基本语法看起来像这样,但不知道该怎么做呢

INSERT INTO newtable (id, name, email, password) VALUES ((JOIN statement?), (JOIN statement?), (JOIN statement?), (JOIN statement?))

如何使用脚本完成此操作?

旧表1(oldtable1):

User ID (id)
Password value (pass)

旧表2(oldtable2):

User ID (id)
First name (fname)
Last name (lname)
Email (email)

新表格(newtable):

id
name
email
password

4 个答案:

答案 0 :(得分:3)

SELECT id, name, email, password INTO NewTable 
FROM 
(
  SELECT o1.id, CONCAT(o2.fname, ' ', o2.lname), o2.email,  o1.Password
  FROM oldTable1 AS o1
    JOIN oldTable2 AS o2
    ON o1.id = o2.id
)

答案 1 :(得分:2)

SELECT ID, Password, Name, Email INTO NewTable 
FROM (SELECT ID, Password
FROM oldTable1
FULL OUTER JOIN oldTable2
ON oldTable1.ID=oldTable2.ID)

试试......我不是天才,但应该有效:)

答案 2 :(得分:0)

在SQL-Server中,如果NewTable尚不存在,您可以这样做。

SELECT IDENTITY(INT,1,1) id, name,email,password
INTO newtable
FROM oldtable1 ot1
     join oldtable2 ot2 on ot1.UserID=ot2.UserID

如果它已经存在

insert into newtable (name,email,password)
select name,email,password
FROM oldtable1 ot1
         join oldtable2 ot2 on ot1.UserID=ot2.UserID

答案 3 :(得分:0)

您确定需要一个新表来连接两个表吗?有没有听过意见?你可以用它。

CREATE VIEW myView AS
SELECT oldtable1.id, oldtable1.pass, oldtable2.fname, oldtable2.email
FROM oldtable1 JOIN oldtable2 ON oldtable1.id = oldtable2.id