คำถามติดแท็ก insert-update

11
แทรกลงในตาราง MySQL หรืออัปเดตถ้ามี
ฉันต้องการเพิ่มแถวในตารางฐานข้อมูล แต่หากมีแถวที่มีคีย์เฉพาะเหมือนกันฉันต้องการอัปเดตแถว ตัวอย่างเช่น: insert into table (id, name, age) values(1, "A", 19) สมมติว่าคีย์ที่ไม่ซ้ำกันidและในของฉันฐานข้อมูลid = 1มีแถวที่มี ในกรณีนั้นฉันต้องการอัปเดตแถวนั้นด้วยค่าเหล่านี้ โดยปกติจะทำให้เกิดข้อผิดพลาด ถ้าฉันใช้insert IGNOREมันจะไม่สนใจข้อผิดพลาด แต่ก็ยังไม่อัปเดต

6
วิธี UPSERT (รวมแทรก ... ในการอัปเดตซ้ำซ้อน) ใน PostgreSQL
คำถามที่ถามบ่อยมากที่นี่คือวิธีการเพิ่มความโกรธซึ่งเป็นสิ่งที่ MySQL เรียกINSERT ... ON DUPLICATE UPDATEและมาตรฐานรองรับเป็นส่วนหนึ่งของการMERGEดำเนินการ เนื่องจาก PostgreSQL ไม่สนับสนุนโดยตรง (ก่อนหน้า 9.5) คุณจะทำอย่างไร พิจารณาสิ่งต่อไปนี้: CREATE TABLE testtable ( id integer PRIMARY KEY, somedata text NOT NULL ); INSERT INTO testtable (id, somedata) VALUES (1, 'fred'), (2, 'bob'); ตอนนี้คิดว่าคุณต้องการที่จะ "upsert" tuples (2, 'Joe'), (3, 'Alan')ดังนั้นเนื้อหาตารางใหม่จะเป็น: (1, 'fred'), (2, 'Joe'), -- Changed …


7
SQL Server แทรกหากไม่มีแนวปฏิบัติที่เหมาะสมที่สุด
ฉันมีCompetitionsตารางผลลัพธ์ที่เก็บชื่อสมาชิกในทีมและอันดับของพวกเขาไว้ในมือเดียว ในอีกทางหนึ่งฉันต้องรักษาตารางชื่อคู่แข่งที่ไม่ซ้ำกัน : CREATE TABLE Competitors (cName nvarchar(64) primary key) ตอนนี้ฉันมีผลลัพธ์ 200,000 รายการในตารางที่ 1 และเมื่อตารางคู่แข่งว่างเปล่าฉันสามารถทำสิ่งนี้ได้: INSERT INTO Competitors SELECT DISTINCT Name FROM CompResults และแบบสอบถามใช้เวลาเพียง 5 วินาทีในการแทรกชื่อประมาณ 11,000 ชื่อ จนถึงตอนนี้นี่ไม่ใช่แอปพลิเคชันที่สำคัญดังนั้นฉันจึงสามารถตัดทอนตารางคู่แข่งได้เดือนละครั้งเมื่อฉันได้รับผลการแข่งขันใหม่ที่มี 10,000 แถว แต่วิธีปฏิบัติที่ดีที่สุดคืออะไรเมื่อมีการเพิ่มผลลัพธ์ใหม่กับคู่แข่งรายใหม่และรายเดิม? ฉันไม่ต้องการตัดทอนตารางคู่แข่งที่มีอยู่ ฉันจำเป็นต้องดำเนินการคำสั่ง INSERT สำหรับคู่แข่งรายใหม่เท่านั้นและไม่ต้องทำอะไรหากมีอยู่

2
แทรกลงใน ... เลือกจาก ... ในการอัปเดตคีย์ซ้ำ
ฉันกำลังทำแบบสอบถามแทรกซึ่งส่วนใหญ่ของคอลัมน์จำนวนมากจะต้องได้รับการอัปเดตเป็นค่าใหม่หากมีคีย์เฉพาะอยู่แล้ว มันจะเป็นดังนี้: INSERT INTO lee(exp_id, created_by, location, animal, starttime, endtime, entct, inact, inadur, inadist, smlct, smldur, smldist, larct, lardur, lardist, emptyct, emptydur) SELECT id, uid, t.location, t.animal, t.starttime, t.endtime, t.entct, t.inact, t.inadur, t.inadist, t.smlct, t.smldur, t.smldist, t.larct, t.lardur, t.lardist, t.emptyct, t.emptydur FROM tmp t WHERE uid=x ON DUPLICATE KEY UPDATE …

2
เหตุใด 2 แถวจึงได้รับผลกระทบใน "INSERT ... ON DUPLICATE KEY UPDATE"
ฉันกำลังทำINSERT ... ON DUPLICATE KEY UPDATEเพื่อPRIMARY KEYในตารางต่อไปนี้: DESCRIBE users_interests; +------------+---------------------------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +------------+---------------------------------+------+-----+---------+-------+ | uid | int(11) | NO | PRI | NULL | | | iid | int(11) | NO | PRI | NULL | | | preference …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.