Hướng dẫn how do i update multiple entries in mysql? - làm cách nào để cập nhật nhiều mục nhập trong mysql?

Bạn có một sinh viên bảng với

UPDATE students s
JOIN (
    SELECT 1 as id, 5 as new_score1, 8 as new_score2
    UNION ALL
    SELECT 2, 10, 8
    UNION ALL
    SELECT 3, 8, 3
    UNION ALL
    SELECT 4, 10, 7
) vals ON s.id = vals.id
SET score1 = new_score1, score2 = new_score2;
6,
UPDATE students s
JOIN (
    SELECT 1 as id, 5 as new_score1, 8 as new_score2
    UNION ALL
    SELECT 2, 10, 8
    UNION ALL
    SELECT 3, 8, 3
    UNION ALL
    SELECT 4, 10, 7
) vals ON s.id = vals.id
SET score1 = new_score1, score2 = new_score2;
7 và
UPDATE students s
JOIN (
    SELECT 1 as id, 5 as new_score1, 8 as new_score2
    UNION ALL
    SELECT 2, 10, 8
    UNION ALL
    SELECT 3, 8, 3
    UNION ALL
    SELECT 4, 10, 7
) vals ON s.id = vals.id
SET score1 = new_score1, score2 = new_score2;
8 như thế này, trong đó
UPDATE students s
JOIN (
    SELECT 1 as id, 5 as new_score1, 8 as new_score2
    UNION ALL
    SELECT 2, 10, 8
    UNION ALL
    SELECT 3, 8, 3
    UNION ALL
    SELECT 4, 10, 7
) vals ON s.id = vals.id
SET score1 = new_score1, score2 = new_score2;
6 là khóa chính:

Tôiscore1score2
1 10 9
2 8 3
3 10 6
4 4 8

Và đây là bảng dữ liệu mới mà bạn muốn cập nhật lên:

Tôiscore1score2
1 5 8
2 10 8
3 8 3
4 10 7

Và đây là bảng dữ liệu mới mà bạn muốn cập nhật lên:


Có một vài cách để làm điều đó.

UPDATE students SET score1 = 5, score2 = 8 WHERE id = 1;
UPDATE students SET score1 = 10, score2 = 8 WHERE id = 2;
UPDATE students SET score1 = 8, score2 = 3 WHERE id = 3;
UPDATE students SET score1 = 10, score2 = 7 WHERE id = 4;

1. Bạn có thể viết nhiều truy vấn cập nhật như thế này và chạy tất cả chúng cùng một lúc:

UPDATE students s
JOIN (
    SELECT 1 as id, 5 as new_score1, 8 as new_score2
    UNION ALL
    SELECT 2, 10, 8
    UNION ALL
    SELECT 3, 8, 3
    UNION ALL
    SELECT 4, 10, 7
) vals ON s.id = vals.id
SET score1 = new_score1, score2 = new_score2;

2. Hoặc bạn có thể cập nhật với câu lệnh tham gia:

INSERT INTO students 
    (id, score1, score2)
    VALUES 
        (1, 5, 8),
        (2, 10, 8),
        (3, 8, 3),
        (4, 10, 7)
    ON DUPLICATE KEY UPDATE 
        score1 = VALUES(score1),
    score2 = VALUES(score2);


3. Hoặc bạn có thể sử dụng

INSERT INTO students 
    (id, score1, score2)
    VALUES 
        (1, 5, 8),
        (2, 10, 8),
        (3, 8, 3),
        (4, 10, 7)
    ON DUPLICATE KEY UPDATE 
        score1 = VALUES(score1),
    score2 = VALUES(score2);
0

Cần một công cụ GUI tốt cho MySQL? TablePlus là một công cụ hiện đại, gốc với giao diện người dùng thanh lịch, cho phép bạn quản lý đồng thời nhiều cơ sở dữ liệu như MySQL, PostgreSQL, SQLite, Microsoft SQL Server, và hơn thế nữa.. It’s free anyway!

Tải xuống TablePlus cho Mac. Dù sao thì nó cũng miễn phí! Download TablePlus for Windows.

Không phải trên Mac? Tải xuống bảng cho Windows. Download TablePlus for Linux

Trên Linux? Tải xuống bảng cho Linux Download TablePlus for iOS.

Hướng dẫn how do i update multiple entries in mysql? - làm cách nào để cập nhật nhiều mục nhập trong mysql?

Tôi đang cố gắng hiểu cách cập nhật nhiều hàng với các giá trị khác nhau và tôi không nhận được nó. Giải pháp ở khắp mọi nơi nhưng với tôi nó có vẻ khó hiểu.

Chẳng hạn, ba bản cập nhật thành 1 truy vấn:

UPDATE table_users
SET cod_user = '622057'
    , date = '12082014'
WHERE user_rol = 'student'
    AND cod_office = '17389551'; 

UPDATE table_users
SET cod_user = '2913659'
    , date = '12082014'
WHERE user_rol = 'assistant'
    AND cod_office = '17389551'; 

UPDATE table_users
SET cod_user = '6160230'
    , date = '12082014'
WHERE user_rol = 'admin'
    AND cod_office = '17389551'; 

Tôi đọc một ví dụ, nhưng tôi thực sự không hiểu làm thế nào để thực hiện truy vấn. I E:

UPDATE table_to_update
SET cod_user= IF(cod_office = '17389551','622057','2913659','6160230')
    ,date = IF(cod_office = '17389551','12082014')
WHERE ?? IN (??) ;

Tôi không hoàn toàn rõ ràng làm thế nào để thực hiện truy vấn nếu có nhiều điều kiện trong điều kiện ở đâu và trong điều kiện..có ý tưởng?

Hướng dẫn how do i update multiple entries in mysql? - làm cách nào để cập nhật nhiều mục nhập trong mysql?

Siêu bão

4.7585 Huy hiệu vàng21 Huy hiệu bạc33 Huy hiệu đồng5 gold badges21 silver badges33 bronze badges

Hỏi ngày 4 tháng 9 năm 2014 lúc 20:48Sep 4, 2014 at 20:48

Hướng dẫn how do i update multiple entries in mysql? - làm cách nào để cập nhật nhiều mục nhập trong mysql?

franvergara66franvergara66franvergara66

10.3K19 Huy hiệu vàng57 Huy hiệu bạc100 Huy hiệu Đồng19 gold badges57 silver badges100 bronze badges

1

Bạn có thể làm theo cách này:

UPDATE table_users
    SET cod_user = (case when user_role = 'student' then '622057'
                         when user_role = 'assistant' then '2913659'
                         when user_role = 'admin' then '6160230'
                    end),
        date = '12082014'
    WHERE user_role in ('student', 'assistant', 'admin') AND
          cod_office = '17389551';

Tôi không hiểu định dạng ngày của bạn. Ngày nên được lưu trữ trong cơ sở dữ liệu bằng cách sử dụng các loại ngày và thời gian bản địa.

Đã trả lời ngày 4 tháng 9 năm 2014 lúc 20:53Sep 4, 2014 at 20:53

Gordon Linoffgordon LinoffGordon Linoff

1.2M53 Huy hiệu vàng609 Huy hiệu bạc756 Huy hiệu đồng53 gold badges609 silver badges756 bronze badges

16

MySQL cho phép một cách dễ đọc hơn để kết hợp nhiều bản cập nhật vào một truy vấn duy nhất. Điều này dường như phù hợp hơn với kịch bản mà bạn mô tả, dễ đọc hơn nhiều và tránh những điều kiện khó khăn trong nhiều điều kiện.

INSERT INTO table_users (cod_user, date, user_rol, cod_office)
VALUES
('622057', '12082014', 'student', '17389551'),
('2913659', '12082014', 'assistant','17389551'),
('6160230', '12082014', 'admin', '17389551')
ON DUPLICATE KEY UPDATE
 cod_user=VALUES(cod_user), date=VALUES(date)

Điều này giả định rằng sự kết hợp

INSERT INTO students 
    (id, score1, score2)
    VALUES 
        (1, 5, 8),
        (2, 10, 8),
        (3, 8, 3),
        (4, 10, 7)
    ON DUPLICATE KEY UPDATE 
        score1 = VALUES(score1),
    score2 = VALUES(score2);
1 là khóa chính. Nếu chỉ một trong số này là khóa chính, thì hãy thêm trường khác vào danh sách cập nhật. Nếu cả hai đều không phải là khóa chính (dường như không thể) thì cách tiếp cận này sẽ luôn tạo ra các bản ghi mới - có lẽ không phải là điều mong muốn.

Tuy nhiên, cách tiếp cận này làm cho các tuyên bố chuẩn bị dễ dàng hơn để xây dựng và súc tích hơn.

John

12.1k11 Huy hiệu vàng90 Huy hiệu bạc158 Huy hiệu đồng11 gold badges90 silver badges158 bronze badges

Đã trả lời ngày 19 tháng 1 năm 2016 lúc 0:13Jan 19, 2016 at 0:13

18

Bạn có thể sử dụng câu lệnh

INSERT INTO students 
    (id, score1, score2)
    VALUES 
        (1, 5, 8),
        (2, 10, 8),
        (3, 8, 3),
        (4, 10, 7)
    ON DUPLICATE KEY UPDATE 
        score1 = VALUES(score1),
    score2 = VALUES(score2);
2 để xử lý nhiều kịch bản nếu/sau đó:

UPDATE table_to_update 
SET  cod_user= CASE WHEN user_rol = 'student' THEN '622057'
                   WHEN user_rol = 'assistant' THEN '2913659'
                   WHEN user_rol = 'admin' THEN '6160230'
               END
    ,date = '12082014'
WHERE user_rol IN ('student','assistant','admin')
  AND cod_office = '17389551';

Đã trả lời ngày 4 tháng 9 năm 2014 lúc 20:54Sep 4, 2014 at 20:54

Hướng dẫn how do i update multiple entries in mysql? - làm cách nào để cập nhật nhiều mục nhập trong mysql?

Hart Cohart đồngHart CO

33.5K5 Huy hiệu vàng45 Huy hiệu bạc61 Huy hiệu Đồng5 gold badges45 silver badges61 bronze badges

1

UPDATE table_name
SET cod_user = 
    CASE 
    WHEN user_rol = 'student' THEN '622057'
    WHEN user_rol = 'assistant' THEN '2913659'
    WHEN user_rol = 'admin' THEN '6160230'
    END, date = '12082014'

WHERE user_rol IN ('student','assistant','admin')
AND cod_office = '17389551';

Saghachi

7279 Huy hiệu bạc18 Huy hiệu Đồng9 silver badges18 bronze badges

Đã trả lời ngày 11 tháng 12 năm 2016 lúc 7:43Dec 11, 2016 at 7:43

Hướng dẫn how do i update multiple entries in mysql? - làm cách nào để cập nhật nhiều mục nhập trong mysql?

Akshay Bhanakshay BhanAkshay Bhan

2053 Huy hiệu bạc12 Huy hiệu Đồng3 silver badges12 bronze badges

Để mở rộng câu trả lời @trevedhek,

Trong trường hợp bản cập nhật phải được thực hiện với các khóa không duy nhất, sẽ cần 4 truy vấn

Lưu ý: Đây không an toàn giao dịch

Điều này có thể được thực hiện bằng cách sử dụng một bảng tạm thời.

Bước 1: Tạo các phím bảng tạm thời và các cột bạn muốn cập nhật

CREATE TEMPORARY TABLE  temp_table_users
(
    cod_user varchar(50)
    , date varchar(50)
    , user_rol varchar(50)
    ,  cod_office varchar(50)
) ENGINE=MEMORY

Bước 2: Chèn các giá trị vào bảng temp

Bước 3: Cập nhật bảng ban đầu

UPDATE students s
JOIN (
    SELECT 1 as id, 5 as new_score1, 8 as new_score2
    UNION ALL
    SELECT 2, 10, 8
    UNION ALL
    SELECT 3, 8, 3
    UNION ALL
    SELECT 4, 10, 7
) vals ON s.id = vals.id
SET score1 = new_score1, score2 = new_score2;
0

Bước 4: Thả bảng nhiệt độ

Đã trả lời ngày 30 tháng 3 năm 2020 lúc 11:45Mar 30, 2020 at 11:45

Hướng dẫn how do i update multiple entries in mysql? - làm cách nào để cập nhật nhiều mục nhập trong mysql?

SabsabSab

4705 Huy hiệu bạc17 Huy hiệu đồng5 silver badges17 bronze badges

Trong PHP, bạn sử dụng phương pháp

INSERT INTO students 
    (id, score1, score2)
    VALUES 
        (1, 5, 8),
        (2, 10, 8),
        (3, 8, 3),
        (4, 10, 7)
    ON DUPLICATE KEY UPDATE 
        score1 = VALUES(score1),
    score2 = VALUES(score2);
3 của ví dụ MySQLI.

UPDATE students s
JOIN (
    SELECT 1 as id, 5 as new_score1, 8 as new_score2
    UNION ALL
    SELECT 2, 10, 8
    UNION ALL
    SELECT 3, 8, 3
    UNION ALL
    SELECT 4, 10, 7
) vals ON s.id = vals.id
SET score1 = new_score1, score2 = new_score2;
1

So sánh kết quả với giao dịch, chèn, phương thức trường hợp trong bản cập nhật 30.000 RAW.

Giao dịch: 5.5194580554962 Chèn: 0,20669293403625 Trường hợp: 16.474853992462 MULTI: 0.0412278175354
Insert: 0.20669293403625
Case: 16.474853992462
Multi: 0.0412278175354

Như bạn có thể thấy, nhiều câu truy vấn tuyên bố hiệu quả hơn câu trả lời cao nhất.

Chỉ trong trường hợp nếu bạn nhận được thông báo lỗi như thế này:

UPDATE students s
JOIN (
    SELECT 1 as id, 5 as new_score1, 8 as new_score2
    UNION ALL
    SELECT 2, 10, 8
    UNION ALL
    SELECT 3, 8, 3
    UNION ALL
    SELECT 4, 10, 7
) vals ON s.id = vals.id
SET score1 = new_score1, score2 = new_score2;
2

Bạn có thể cần tăng

INSERT INTO students 
    (id, score1, score2)
    VALUES 
        (1, 5, 8),
        (2, 10, 8),
        (3, 8, 3),
        (4, 10, 7)
    ON DUPLICATE KEY UPDATE 
        score1 = VALUES(score1),
    score2 = VALUES(score2);
4 trong tệp cấu hình MySQL.

Đã trả lời ngày 19 tháng 12 năm 2021 lúc 7:50Dec 19, 2021 at 7:50

SaghachisaghachiSaghachi

7279 Huy hiệu bạc18 Huy hiệu Đồng9 silver badges18 bronze badges

1

UPDATE students s
JOIN (
    SELECT 1 as id, 5 as new_score1, 8 as new_score2
    UNION ALL
    SELECT 2, 10, 8
    UNION ALL
    SELECT 3, 8, 3
    UNION ALL
    SELECT 4, 10, 7
) vals ON s.id = vals.id
SET score1 = new_score1, score2 = new_score2;
3

Đã trả lời ngày 11 tháng 12 năm 2016 lúc 7:43
I Am trying to update each col1 where col4 = col3 different value for each row

Hướng dẫn how do i update multiple entries in mysql? - làm cách nào để cập nhật nhiều mục nhập trong mysql?

Akshay Bhanakshay BhanApr 23, 2020 at 4:25

Hướng dẫn how do i update multiple entries in mysql? - làm cách nào để cập nhật nhiều mục nhập trong mysql?

2053 Huy hiệu bạc12 Huy hiệu Đồngankit giri

Để mở rộng câu trả lời @trevedhek,3 silver badges10 bronze badges

Trong trường hợp bản cập nhật phải được thực hiện với các khóa không duy nhất, sẽ cần 4 truy vấn

UPDATE students s
JOIN (
    SELECT 1 as id, 5 as new_score1, 8 as new_score2
    UNION ALL
    SELECT 2, 10, 8
    UNION ALL
    SELECT 3, 8, 3
    UNION ALL
    SELECT 4, 10, 7
) vals ON s.id = vals.id
SET score1 = new_score1, score2 = new_score2;
4

Lưu ý: Đây không an toàn giao dịch

UPDATE students s
JOIN (
    SELECT 1 as id, 5 as new_score1, 8 as new_score2
    UNION ALL
    SELECT 2, 10, 8
    UNION ALL
    SELECT 3, 8, 3
    UNION ALL
    SELECT 4, 10, 7
) vals ON s.id = vals.id
SET score1 = new_score1, score2 = new_score2;
5

Điều này có thể được thực hiện bằng cách sử dụng một bảng tạm thời.

Bước 1: Tạo các phím bảng tạm thời và các cột bạn muốn cập nhậtApr 16, 2020 at 13:30

Hướng dẫn how do i update multiple entries in mysql? - làm cách nào để cập nhật nhiều mục nhập trong mysql?

ru51anru51anru51an

Bước 2: Chèn các giá trị vào bảng temp1 gold badge1 silver badge10 bronze badges

1

Làm cách nào để cập nhật hơn 1000 bản ghi trong SQL?

Tôi cần cập nhật hơn 1000 bản ghi. Các giá trị nằm trong một bảng khác ...
trong đó cột = (chọn cột2 từ bảng).
Cập nhật tab Đặt cột = (chọn Cột2 từ bảng).
Chọn @Varable = (chọn Cột2 từ bảng).

Chúng ta có thể cập nhật nhiều hàng trong một câu lệnh cập nhật không?

Chúng ta có thể cập nhật nhiều hàng của bảng bằng lệnh cập nhật đơn..

Bạn có thể cập nhật trên nhiều bảng trong MySQL không?

Để tránh vấn đề này, hãy thêm một đơn đặt hàng theo mệnh đề để gây ra các hàng có giá trị ID lớn hơn được cập nhật trước những giá trị có giá trị nhỏ hơn: Cập nhật T SET ID = ID + 1 Đơn hàng của ID Desc;Bạn cũng có thể thực hiện các hoạt động cập nhật bao gồm nhiều bảng.Tuy nhiên, bạn không thể sử dụng đơn hàng theo hoặc giới hạn với bản cập nhật nhiều bảng.You can also perform UPDATE operations covering multiple tables. However, you cannot use ORDER BY or LIMIT with a multiple-table UPDATE .

Làm thế nào cập nhật nhiều cột với các giá trị khác nhau trong SQL?

Để cập nhật nhiều cột, sử dụng mệnh đề đặt để chỉ định các cột bổ sung.Giống như với các cột đơn, bạn chỉ định một cột và giá trị mới của nó, sau đó một tập hợp cột và giá trị khác.Trong trường hợp này, mỗi cột được phân tách bằng một cột.use the SET clause to specify additional columns. Just like with the single columns you specify a column and its new value, then another set of column and values. In this case each column is separated with a column.