Sql 插入缺少的行
我有一个有趣的SQL难题,我还没能解决,希望你们中的一个比我有更多的SQL Fu。我有两张这样的桌子:Sql 插入缺少的行,sql,Sql,我有一个有趣的SQL难题,我还没能解决,希望你们中的一个比我有更多的SQL Fu。我有两张这样的桌子: tblFormElement FrmElementID Label tblFormSubmissionElement FrmID_fk FrmElementID_fk SubmitID_fk SubmissionValue Label | FrmID_fk | FrmElementID_fk | SubmitID_fk | Submiss
tblFormElement
FrmElementID
Label
tblFormSubmissionElement
FrmID_fk
FrmElementID_fk
SubmitID_fk
SubmissionValue
Label | FrmID_fk | FrmElementID_fk | SubmitID_fk | SubmissionValue
Label1 | 55 | 1601 | 7062 | Foo1
Label2 | 55 | 1602 | 7062 | Foo2
Label3 | 55 | 1603 | 7062 | Foo3
Label4 | 55 | 1604 | 7062 | Foo4
Label5 | 55 | 1605 | 7062 | Foo5
Label | FrmID_fk | FrmElementID_fk | SubmitID_fk | SubmissionValue
Label1 | 55 | 1601 | 5011 | Foo1
Label2 | 55 | 1602 | 5011 | Foo2
Label3 | 55 | 1603 | 5011 | Foo3
Label5 | 55 | 1605 | 5011 | Foo5
如果我运行以下SQL:
SELECT tblFormElement.Label, tblFormSubmissionElement.* FROM tblFormElement
JOIN tblFormSubmissionElement ON FrmElementID = FrmElementID_fk
WHERE FrmID_fk = 55
AND SubmitID_fk = 7062
我将得到如下结果集:
tblFormElement
FrmElementID
Label
tblFormSubmissionElement
FrmID_fk
FrmElementID_fk
SubmitID_fk
SubmissionValue
Label | FrmID_fk | FrmElementID_fk | SubmitID_fk | SubmissionValue
Label1 | 55 | 1601 | 7062 | Foo1
Label2 | 55 | 1602 | 7062 | Foo2
Label3 | 55 | 1603 | 7062 | Foo3
Label4 | 55 | 1604 | 7062 | Foo4
Label5 | 55 | 1605 | 7062 | Foo5
Label | FrmID_fk | FrmElementID_fk | SubmitID_fk | SubmissionValue
Label1 | 55 | 1601 | 5011 | Foo1
Label2 | 55 | 1602 | 5011 | Foo2
Label3 | 55 | 1603 | 5011 | Foo3
Label5 | 55 | 1605 | 5011 | Foo5
现在,如果我将SubmitID_fk更改为7062以下的任何值,我将得到如下结果:
tblFormElement
FrmElementID
Label
tblFormSubmissionElement
FrmID_fk
FrmElementID_fk
SubmitID_fk
SubmissionValue
Label | FrmID_fk | FrmElementID_fk | SubmitID_fk | SubmissionValue
Label1 | 55 | 1601 | 7062 | Foo1
Label2 | 55 | 1602 | 7062 | Foo2
Label3 | 55 | 1603 | 7062 | Foo3
Label4 | 55 | 1604 | 7062 | Foo4
Label5 | 55 | 1605 | 7062 | Foo5
Label | FrmID_fk | FrmElementID_fk | SubmitID_fk | SubmissionValue
Label1 | 55 | 1601 | 5011 | Foo1
Label2 | 55 | 1602 | 5011 | Foo2
Label3 | 55 | 1603 | 5011 | Foo3
Label5 | 55 | 1605 | 5011 | Foo5
使用select查询:
Insert into OtherTable (
SELECT tblFormElement.Label, tblFormSubmissionElement.*
FROM tblFormElement
JOIN tblFormSubmissionElement
ON FrmElementID = FrmElementID_fk
WHERE FrmID_fk = 55
AND SubmitID_fk <> 1604)
这就是你想要的吗?我想你想要这样的东西
INSERT INTO tblFormSubmissionElement
SELECT 55, 1604, SubmitID_fk, 'Foo4'
FROM tblFormSubmissionElement
WHERE SubmitID_fk < 7026
AND FrmElementID_fk = 1603;
可能有一种方法可以使用DISTINCT而不是将FrmElementID_fk与1603匹配,但我认为这也应该起作用。为什么不使用where FrmElementID_fk 1604作为条件?它是AND而不是&&forSQL@Andomar谢谢我太习惯于使用mysql了,我甚至都没发现它不是。