簡體   English   中英

SQL 基於 JOIN 查詢的更新表

[英]SQL update table based on JOIN-query

我有以下 SQL 查詢

SELECT holes.hole_x, holes.hole_y, holes.hole_z
FROM holes
LEFT OUTER JOIN shots
    ON holes.tournament = shots.tournament
    AND holes.course = shots.course
    AND holes.year = shots.year
    AND holes.round = shots.round
    AND holes.hole = shots.hole
WHERE shots.end = 'hole'
    AND shots.x = '0.0'
    AND shots.y ='0.0'
    AND shots.z = '0.0'

如何更改此查詢,以便使用holes的返回值更新shotsxyz的零值?

謝謝

只需刪除 SELECT 並添加更新:

UPDATE s
    SET s.x = h.hole_x, s.y = h.hole_y, s.z = h.hole_z, 
FROM holes h
LEFT OUTER JOIN shots s
    ON h.tournament = s.tournament
    AND h.course = s.course
    AND h.year = s.year
    AND h.round = s.round
    AND h.hole = s.hole
WHERE shots.end = 'hole'
    AND s.x = '0.0'
    AND s.y ='0.0'
    AND s.z = '0.0'

PostgreSQL:

update shots s 
set
  x = h.x, 
  y = h.y, 
  z = h.z 
from holes h 
where 
    s.hole = h.hole and 
    s."year" = h."year" and 
    s.x = 0 and
    s.y = 0 and
    s.z = 0

SQL 服務器:

UPDATE SHOTS  
SET
  X = H.X, 
  Y = H.Y, 
  Z = H.Z 
FROM SHOTS S
INNER JOIN HOLES H on 
    S.HOLE = H.HOLE 
    AND S.[YEAR] = H.[YEAR]
WHERE 
    S.X = 0 AND 
    S.Y = 0 AND
    S.Z = 0

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM