Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

MySQL TRÊN CẬP NHẬT KHÓA DUPLICATE trong khi chèn tập hợp kết quả từ một truy vấn

Vấn đề là trong các mệnh đề khóa trùng lặp, bạn không thể sử dụng bất kỳ hàm nhóm nào (chẳng hạn như COUNT . Tuy nhiên, có một cách dễ dàng để giải quyết vấn đề này. Bạn chỉ cần gán kết quả của COUNT(crime_id) gọi đến một biến mà bạn có thể sử dụng trong các mệnh đề chính trùng lặp. Khi đó, câu lệnh chèn của bạn sẽ giống như sau:

INSERT INTO `simple_crimecount` (`date` , `city` , `crimecount`)(
    SELECT 
        `date`, 
        `city`,
        @determined_crimecount := count(`crime_id`) AS `determined_crimecount`
    FROM `big_log_of_crimes`
    GROUP BY `date`, `city`
) ON DUPLICATE KEY UPDATE `crimecount` = @determined_crimecount;

Tôi đã tạo SQL Fiddle cho bạn biết cách nó hoạt động: SQL-Fiddle

Bạn cũng có thể sử dụng UPDATE crimecount = VALUES(crimecount) và không có biến:

INSERT INTO `simple_crimecount` (`date` , `city` , `crimecount`)(
    SELECT 
        `date`, 
        `city`,
        count(`crime_id`) AS `determined_crimecount`
    FROM `big_log_of_crimes`
    GROUP BY `date`, `city`
) ON DUPLICATE KEY UPDATE `crimecount` = VALUES(crimecount);

Xem SQL-Fiddle-2




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. LỖI 1356 (HY000):Xem các tham chiếu của 'mysql.user' không hợp lệ (các) bảng hoặc (các) cột hoặc (các) hàm hoặc bộ định nghĩa / người gọi của chế độ xem thiếu quyền sử dụng chúng

  2. Nhập dữ liệu Excel vào bảng quan hệ tại MySQL

  3. Thực thi tập lệnh SQL để tạo bảng và hàng

  4. truy vấn nào tốt hơn và hiệu quả - mysql

  5. thiết kế ngược cơ sở dữ liệu mysql để tạo ứng dụng django