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

MySQL CHÈN VÀO / BẬT KHÓA DUPLICATE với sự cố câu lệnh SELECT

Một cái gì đó đơn giản như thế này có hiệu quả không?

insert into cities (city, state, size)
select city, state, count(*) as size from listings
group by city, state

nhóm group by nên đảm bảo rằng không có bản sao để không cần on duplicate key . Tổng () + truy vấn con mà bạn đang thực hiện có vẻ như bạn chỉ đang cố gắng thực hiện một phép đếm (*).

Lỗi cụ thể mà bạn gặp phải là do size =sum (count). Trong loạt chèn, cách chính xác để thực hiện việc này sẽ là size =values ​​(size), hãy xem tài liệu trên values() .

CHỈNH SỬA:

Nếu nó thêm một mục nhập khác cho mỗi thành phố thì sẽ không có chỉ mục duy nhất về thành phố và trên khóa trùng lặp sẽ không làm gì cả.

nếu bạn thêm một chỉ mục duy nhất vào (thành phố, tiểu bang) thì bạn có thể thêm on duplicate key update size=values(size) cho truy vấn trên và nó sẽ cập nhật từng bản ghi tại chỗ.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL có hỗ trợ ràng buộc kiểm tra không?

  2. Bàn tối đa &Mẫu thiết kế

  3. Tải tệp từ IPhone / IPad lên DB mysql?

  4. Yêu cầu lại Mysql2 ::Lỗi:Người dùng đã vượt quá tài nguyên 'max_user_connections' (giá trị hiện tại:10)

  5. Sử dụng Access hoặc MySQL làm cơ sở dữ liệu phụ trợ