从一个表插入到另一个表的SQL副本 - 使用where子句

时间:2014-10-15 11:15:01

标签: java sql sqlite

我有一个名为Details的表,这个表有_id字段作为主键。对于详细信息中的每条记录,我在另一个名为“通知”的表中有七条记录。详细信息的_id字段与Notifications表的PrimaryId字段映射。

现在我想将两个列,即imageUri和BirthDate从Details复制到Notifications中,其中_id of Details等于Notifications的PrimaryId字段。

到目前为止,我已尝试过以下内容:

INSERT INTO Notifications (imageUri, DOB) SELECT (imageUri, birthDate) FROM Details

但我没有任何线索如何添加Where子句。请给我一个标题

4 个答案:

答案 0 :(得分:3)

只需在WHERE部分添加SELECT条件,例如

INSERT INTO Notifications (imageUri, DOB) 
SELECT d.imageUri, d.birthDate 
FROM Details d
JOIN Notifications n
ON d._id = n.PrimaryId

此外,我认为你实际上是在寻找UPDATE而不是INSERT,因为你在帖子中说过

  

对于详细信息中的每条记录,我在另一个表中有七条记录   称为通知

在这种情况下,如果您INSERT,那么您将在其余字段中添加null的新记录,而不是update旧记录。此外,对于您的情况,您不需要WHERE子句而不是JOIN clause并指定条件。

update Notifications
set imageUri = (select imageUri
                     from Details WHERE _id = Notifications.PrimaryId), 
DOB = (select DOB
            from Details WHERE _id = Notifications.PrimaryId)  

答案 1 :(得分:1)

尝试:

insert into Notifications (imageUri, DOB)
AS select d.imageUri, d.birthDate
from Details d, Notifications n
where d._id = n.PrimaryId

答案 2 :(得分:1)

使用此

INSERT INTO Notifications (imageUri, DOB)
SELECT D.imageUri, D.birthDate FROM Details D
INNER JOIN Notifications N on d._id_FieldName=N._id_FieldName

答案 3 :(得分:0)

我认为您可以在查询末尾添加where子句:

INSERT INTO Notifications (imageUri, DOB) SELECT (imageUri, birthDate) FROM Details WHERE ...

您可以在此处查看详细信息:http://www.tutorialspoint.com/sqlite/sqlite_insert_query.htm