2015-02-09 57 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如果查詢返回多個記錄,這是任選查詢不被使用。

謝謝。