2
我使用MySQL數據庫,我想更新基於另一個表中的字段。類似於:更新字段感謝基於另一個字段的子查詢
UPDATE table1
SET field1 = table2.id
WHERE field2 IN (
SELECT table2.name
FROM table2
);
我知道這個查詢不起作用,但這裏有個想法。這甚至有可能做到嗎?
我使用MySQL數據庫,我想更新基於另一個表中的字段。類似於:更新字段感謝基於另一個字段的子查詢
UPDATE table1
SET field1 = table2.id
WHERE field2 IN (
SELECT table2.name
FROM table2
);
我知道這個查詢不起作用,但這裏有個想法。這甚至有可能做到嗎?
您可以使用如下的相關子查詢。這假定將會有一個匹配的值返回。如果返回多個匹配值,則會引發錯誤,如果返回零,則將該字段設置爲null。如果最後一種行爲不可取,則需要where
條款。
UPDATE table1
SET field1 = (SELECT DISTINCT table2.ValueColumn
FROM table2
WHERE table2.JoinColumn = table1.JoinColumn)
編輯
審查記錄爲0或超過10場比賽,你可以使用
SELECT table1.JoinColumn, COUNT(DISTINCT table2.ValueColumn)
FROM table1
LEFT JOIN table2
ON table2.JoinColumn = table1.JoinColumn
GROUP BY table1.JoinColumn
HAVING COUNT(DISTINCT table2.ValueColumn) <> 1
呀你說得對,謝謝。我沒有想到這種可能性。 – Nicolas 2010-06-15 11:03:52
@Nicolas這可能也有一個JOIN語法。有在SQL Server中,但我不知道這是相同的在MySQL – 2010-06-15 11:05:35
@Martin我目前正在測試它,我無法擺脫這個錯誤:'子查詢返回多於1行,儘管嘗試添加DISTINCT子查詢。 – Nicolas 2010-06-15 11:09:00