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

Kết hợp hai truy vấn để kiểm tra các bản sao trong MySQL?

Thực sự có hai vấn đề trong câu hỏi của bạn. Vấn đề đầu tiên là tạo Number cột duy nhất và cột thứ hai là để tăng cột Name bằng cách thêm một số nếu nó đã tồn tại.

PHẦN ĐẦU TIÊN

Vì số là UNIQUE , thực thi một UNIQUE ràng buộc trên cột. Nó có thể là PRIMARY KEY hoặc UNIQUE KEY .

Nếu cột không có KEY và bạn muốn đặt nó thành PRIMARY , đây là ALTER tuyên bố:

ALTER TABLE TableName ADD CONSTRAINT tb_pk PRIMARY KEY (Number)

nhưng nếu bạn chỉ muốn nó là UNIQUE và không phải là khóa chính,

ALTER TABLE TableName ADD CONSTRAINT tb_uq UNIQUE (Number)

PHẦN THỨ HAI

Bạn thực sự có thể làm điều đó mà không cần sử dụng tham gia.

INSERT INTO TableName(Number, Name)
SELECT  124 AS Number, 
        CONCAT('Robert', COALESCE(MAX(CAST(REPLACE(Name, 'Robert', '0') AS UNSIGNED)) + 1,'')) AS Name
FROM    TableName
WHERE   Name LIKE 'Robert%'

Một số chi tiết:

khi giá trị được cung cấp trên cột Number đã tồn tại, nó sẽ báo lỗi vì cột là duy nhất. Tôi đã đọc nhận xét từ một bài đăng đã xóa nói rằng: "..Số không phải là duy nhất, nhưng nếu nó tồn tại, tôi không muốn nhập hồ sơ." - sẽ không có ý nghĩa gì nếu bạn không muốn thêm tính độc đáo trên cột. Làm thế nào bạn sẽ biết nếu số đã tồn tại hay chưa? Thực hiện một chút kiểm tra sự tồn tại của Number cảm thấy như một chút phí cho tôi. Vì vậy, khuyến nghị tốt nhất của tôi là thực thi tính duy nhất.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cập nhật MYSQL với lỗi truy vấn con WHERE SELECT

  2. MySQL làm thế nào để điền ngày bị thiếu trong phạm vi?

  3. Cách khóa một hàng để chọn trong MySQL

  4. Kết nối từ xa với cơ sở dữ liệu MySQL

  5. Đăng ký người dùng và xác minh email PHP và MySQL