2015-02-09 42 views
0

我试图对以下查询作出一个声明(自动)。将所有查询(选择和删除)链接到一个

所有我知道我的用户界面的提案ID。我做的查询手动像下面

select * from tblAssessment where ProposalID like '%0081/2013/0587B%' 

select * from tblAssessmentVersion where AssessmentID=587 

select * from tblIdentifiedThreatenedSpecies where AssessmentVersionID=731 

delete from tblIdentifiedThreatenedSpecies where PercentGain=0 and AssessmentVersionID=731 

一旦我知道的建议ID,我查询到tblassessment得到评估ID,然后用评估的ID中查询到assessmentversion表中查找评估版本ID然后使用在已确定的物种表中删除,其中percentgain列记录的评估版本编号为0

感激你的帮助,在此先感谢

+0

使用连接获取临时表或变量中的匹配记录,然后在删除查询中使用该记录。 – 2015-02-09 06:37:54

回答

1

您可以使用DELETE FROM .. JOIN

DELETE s 
FROM tblIdentifiedThreatenedSpecies s 
INNER JOIN tblAssessmentVersion v 
    ON v.AssessmentVersionID = s.AssessmentVersionID 
INNER JOIN tblAssessment a 
    ON a.AssessmentID = v.AssessmentID 
WHERE 
    a.ProposalID LIKE '%0081/2013/0587B%' 
    AND PercentGain = 0 

要检查行被删除,SELECT第一:

SELECT s.* 
FROM tblIdentifiedThreatenedSpecies s 
INNER JOIN tblAssessmentVersion v 
    ON v.AssessmentVersionID = s.AssessmentVersionID 
INNER JOIN tblAssessment a 
    ON a.AssessmentID = v.AssessmentID 
WHERE 
    a.ProposalID LIKE '%0081/2013/0587B%' 
    AND PercentGain = 0 
1

加入所有的SELECT在一个子查询

delete from tblIdentifiedThreatenedSpecies 
where PercentGain=0 and AssessmentVersionID in 
(
    select av.Id 
    from 
    tblAssessmentVersion av 
    join tblAssessment a on a.Id = av.AssessmentID 
    where a.ProposalID like '%0081/2013/0587B%' 
) 
0

我希望这会工作。

delete from tblIdentifiedThreatenedSpecies 
where PercentGain=0 and AssessmentVersionID=(
    select top 1 AssessmentVersionID from tblAssessmentVersion where AssessmentID=(
     select top 1 AssessmentID from tblAssessment where ProposalID like '%0081/2013/0587B%' 
    ) 
); 

这里top 1如果查询返回多个记录,这是任选查询不被使用。

谢谢。