2011-11-03 60 views
-2
update kothari_kem.companyinfo ci 
set ci.viewsource = "" 
where ci.recid in (
    SELECT c.recid 
    FROM kothari_kem.companyinfo c 
    where (c.contactperson = NULL or c.contactperson = "") 
    AND (c.viewsource = NULL or c.viewsource = "Y") 
) 
+1

你得到一些錯誤?怎麼了? – Marco

+0

是的我得到錯誤 您不能在FROM子句中指定更新的目標表'ci' 錯誤編號1093 – vinit

+0

請勿使用'='與null進行比較。使用'是NULL'instaed。 –

回答

0

試試這個:

CREATE TEMPORARY TABLE tt (id INT); 
INSERT INTO tt 
    SELECT c.recid 
    FROM kothari_kem.companyinfo c 
    where (c.contactperson IS NULL or c.contactperson = "") 
    AND (c.viewsource IS NULL or c.viewsource = "Y"); 
UPDATE kothari_kem.companyinfo ci 
SET ci.viewsource = "" 
WHERE ci.recid in 
    (SELECT id FROM tt) 

無論如何,我認爲你的查詢可以改寫爲

UPDATE kothari_kem.companyinfo ci 
SET ci.viewsource = "" 
WHERE (ci.contactperson IS NULL or ci.contactperson = "") 
    AND (ci.viewsource IS NULL or ci.viewsource = "Y") 
+1

@vinit:如果它工作,您應該[接受](http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work)我的答案:) – Marco