Bạn có thể sửa đổi CHÈN của mình thành một cái gì đó như thế này:
INSERT INTO tablename (tag)
SELECT $tag
FROM tablename
WHERE NOT EXISTS(
SELECT tag
FROM tablename
WHERE tag = $tag
)
LIMIT 1
Nơi $tag
là thẻ (được trích dẫn chính xác hoặc tất nhiên là một trình giữ chỗ) mà bạn muốn thêm nếu nó chưa có ở đó. Cách tiếp cận này thậm chí sẽ không kích hoạt INSERT (và sự lãng phí tự động tăng thêm sau đó) nếu thẻ đã ở đó. Bạn có thể nghĩ ra câu SQL đẹp hơn thế nhưng phần trên sẽ thành công.
Nếu bảng của bạn được lập chỉ mục đúng cách thì việc CHỌN bổ sung để kiểm tra sự tồn tại sẽ nhanh chóng và cơ sở dữ liệu sẽ phải thực hiện kiểm tra đó.
Tuy nhiên, cách tiếp cận này sẽ không hoạt động đối với thẻ đầu tiên. Bạn có thể tạo bảng thẻ của mình bằng một thẻ mà bạn nghĩ rằng sẽ luôn được sử dụng hoặc bạn có thể thực hiện kiểm tra riêng cho bảng trống.