mysql有子查询么_sql-带有子查询的mysql更新查询
謝謝,我不知道使用INNER JOIN進行更新。
在原始查詢中,錯誤是要命名子查詢,該子查詢必須返回一個值,因此不能使用別名。
UPDATE Competition
SET Competition.NumberOfTeams =
(SELECT count(*) -- no column alias
FROM PicksPoints
WHERE UserCompetitionID is not NULL
-- put the join condition INSIDE the subquery :
AND CompetitionID = Competition.CompetitionID
group by CompetitionID
) -- no table alias
應該為比賽的每條記錄做好準備。
要注意的是:
其效果與mellamokb提出的查詢不完全相同,后者不會在沒有相應PickPoints的情況下更新競賽記錄。
由于SELECT COUNT(*)僅會計算ID的現有值,
而SELECT COUNT(*)將始終返回一個值,如果未選擇任何記錄,則返回0。
這可能對您來說是一個問題,也可能不是。
意識為0的mellamokb查詢版本為:
Update Competition as C
LEFT join (
select CompetitionId, count(*) as NumberOfTeams
from PicksPoints as p
where UserCompetitionID is not NULL
group by CompetitionID
) as A on C.CompetitionID = A.CompetitionID
set C.NumberOfTeams = IFNULL(A.NumberOfTeams, 0)
換句話說,如果找不到對應的PickPoints,請將Competition.NumberOfTeams設置為零。
總結
以上是生活随笔為你收集整理的mysql有子查询么_sql-带有子查询的mysql更新查询的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql for mac中文_mysq
- 下一篇: centos 离线安装mysql_Cen