วิธีที่ดีในการใช้นามแฝงตารางในคำสั่ง Update?


95

ฉันใช้ SQL Server และพยายามอัปเดตแถวจากในตารางเดียวกัน ฉันต้องการใช้นามแฝงตารางเพื่อให้อ่านง่าย

นี่คือวิธีที่ฉันกำลังทำอยู่ในขณะนี้:

UPDATE ra
SET ra.ItemValue = rb.ItemValue
FROM dbo.Rates ra
INNER JOIN  dbo.Rates rb
ON ra.ResourceID = rb.ResourceID
WHERE ra.PriceSched = 't8'
AND rb.PriceSched = 't9'

มีวิธีที่ง่ายกว่า / ดีกว่านี้ไหม?


1
ฉันต้องการใช้คีย์เวิร์ดที่เป็นทางเลือก "AS" (FROM dbo.Rates AS ra) เพื่อให้อ่านง่าย
Robert S.

4
ฉันจะใช้ไวยากรณ์ ANSI JOIN ที่เหมาะสมFROM dbo.Rates ra INNER JOIN dbo.Rates rb ON ra.ResourceID = rb.ResourceID- เป็นมาตรฐานชัดเจนกว่าและหลีกเลี่ยงผลิตภัณฑ์คาร์ทีเซียนที่ไม่ต้องการโดยลืมเงื่อนไขการเข้าร่วมในส่วนคำสั่ง WHERE ของคุณ ....
marc_s

1
marc_s มีจุดที่ดี ฉันได้แก้ไข SQL เพื่อใช้ไวยากรณ์ JOIN ที่ชัดเจนขึ้น
realcals

คำตอบ:


44
UPDATE ra 
   SET ra.ItemValue = rb.ItemValue
  FROM dbo.Rates ra
 INNER JOIN dbo.Rates rb
         ON ra.ResourceID = rb.ResourceID
WHERE ra.PriceSched = 't8'
  AND rb.PriceSched = 't9';

ซึ่งอาจช่วยในการปรับปรุงประสิทธิภาพ


3
ทำไม?? คุณไม่ได้เปลี่ยนอะไรเลยนอกจากเครื่องสำอาง!
underscore_d

1

นามแฝงของตารางใน Update Query ใน T-SQL (Microsoft SQL) สำหรับ MS SQL Server 2008 R2 ก็ใช้งานได้ดี

UPDATE A_GeneralLedger  set ScheduleId=g.ScheduleId
from A_GeneralLedger l inner join A_AcGroup g on g.ACGroupID=l.AccountGroupID
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.