誰能幫我,我怎麼可以更新其在WHERE子句..UPDATE和SELECT在MySQL
我的查詢看起來像這樣選擇到另一個表的一個表,但它是一個錯誤..
UPDATE empinfo e SET e.tellno='32154'
WHERE e.empno IN (SELECT ei.empno FROM empinfo ei WHERE ei.tellno <> '123456');
您的迴應是高度讚賞.. :)
誰能幫我,我怎麼可以更新其在WHERE子句..UPDATE和SELECT在MySQL
我的查詢看起來像這樣選擇到另一個表的一個表,但它是一個錯誤..
UPDATE empinfo e SET e.tellno='32154'
WHERE e.empno IN (SELECT ei.empno FROM empinfo ei WHERE ei.tellno <> '123456');
您的迴應是高度讚賞.. :)
爲什麼不:
UPDATE empinfo e SET e.tellno='32154' WHERE tellno <> '123456'
你爲什麼在這裏需要嵌套查詢,請嘗試直接
UPDATE empinfo e SET e.tellno='32154'
WHERE e.tellno != '123456'
出了什麼問題:
UPDATE empinfo e SET e.tellno='32154' WHERE e.tellno <> '123456';
或
UPDATE empinfo e SET e.tellno='32154' WHERE e.tellno != '123456';
或
UPDATE empinfo e SET e.tellno='32154' WHERE e.tellno NOT '123456';
? 但是,如果empno在您的表中不唯一,那麼這個SQL將不會像您提供的那樣工作!那麼,empno是獨一無二的呢?
empno沒有唯一值..如果empno是唯一值,我的查詢是否可以工作? – Bryan 2010-10-21 09:57:17
如果empno是唯一的,那麼無關緊要。 – 2010-10-21 11:23:25
不知道爲什麼我回答這個問題,因爲你的接受率是垃圾,但是這裏就是這樣。
試試這個
UPDATE empinfo SET tellno='32154'
WHERE empno IN (
SELECT empno
FROM empinfo
WHERE tellno NOT '123456'
);
您不能使用where子句中正在更新的同一表中的select子查詢。 – 2010-10-21 09:43:42
@Eran - 你可以但不喜歡那樣。您需要將整個子查詢包裝爲[作爲派生表](http://www.xaprb.com/blog/2006/06/23/how-to-select-from-an-update-target-in- mysql /下)。 – 2010-10-21 09:57:46
@Martin有趣! – 2010-10-21 10:19:53
好,例如:
REC1: empno=1 tellno='654321'
REC2: empno=2 tellno='654321'
REC3: empno=3 tellno='123456'
REC4: **empno=1** tellno='123456'
當你使用類似
UPDATE empinfo e SET e.tellno='32154' WHERE e.tellno != '123456';
然後你會得到這樣的:
REC1: empno=1 tellno='32154'
REC2: empno=2 tellno='32154'
REC3: empno=3 tellno='123456'
**REC4: empno=1 tellno='123456'**
但是,您的原始查詢,似乎想把它改成這樣:
REC1: empno=1 tellno='32154'
REC2: empno=2 tellno='32154'
REC3: empno=3 tellno='123456'
**REC4: empno=1 tellno='32154'**
你要哪的這兩個選項?如果你想要第二個,那麼你需要做一個子選擇,但是同一個表上的子選擇對於MySQL來說是不可能的。
如果您發佈錯誤,它會有很大的幫助。 – duffymo 2010-10-21 09:36:51
你得到的錯誤信息是什麼?也許這與將單引號改爲雙引號一樣簡單。 :-) – 2010-10-21 09:37:25
這是錯誤信息:您無法在FROM子句中指定目標表'e'進行更新 – Bryan 2010-10-21 09:55:35