อัปเดตข้อมูลด้วยค่าสุ่มในช่วงที่กำหนด
ใช้ FLOOR(1 + RAND() * 3) สร้างเลขสุ่ม 1, 2, 3 แล้วนำไปใช้ใน WHERE clause ของ UPDATE
รูปแบบคำสั่ง (Syntax)
UPDATE yourTableName
SET yourColumnName = new_value
WHERE yourColumnName2 = (SELECT FLOOR(1 + RAND() * 3));
ตัวอย่างการใช้งาน
สร้างตาราง updateRowWith1To3:
CREATE TABLE updateRowWith1To3 (
Id INT,
Name VARCHAR(100)
);
INSERT INTO updateRowWith1To3 VALUES
(1, 'John'), (2, 'Sam'), (3, 'Carol'),
(4, 'Mike'), (5, 'Bob'), (6, 'David');
อัปเดต Name เป็น 'Mary' ที่ Id สุ่ม 1-3:
UPDATE updateRowWith1To3
SET Name = 'Mary'
WHERE Id = (SELECT FLOOR(1 + RAND() * 3));
ผลลัพธ์ตัวอย่าง (สุ่มได้ Id=1):
| Id | Name |
|---|---|
| 1 | Mary |
| 2 | Sam |
| 3 | Carol |
| 4 | Mike |
| 5 | Bob |
| 6 | David |
การสร้างสุ่มในช่วงอื่นๆ
| ช่วง | สูตร |
|---|---|
| 1 ถึง N | FLOOR(1 + RAND() * N) |
| M ถึง N | FLOOR(M + RAND() * (N - M + 1)) |
| 0 ถึง 1 (ทศนิยม) | RAND() |
ข้อควรระวัง: Subquery ใน WHERE จะถูกประเมินครั้งเดียวต่อคำสั่ง UPDATE ทั้งคำสั่ง ไม่ได้สุ่มใหม่ต่อแถว