Tôi đang cố xóa các hàng không được sử dụng khỏi bảng. này được đơn giản hóa ví dụ về vấn đề của tôi:Làm thế nào để xóa các hàng không sử dụng từ bảng DB bằng cách sử dụng SQL?
Có 2 bảng:
user table:
user_id user_name
--------------------
1 Mike
3 Carol
8 Eric
address table:
user_id address
-----------------------
1 [email protected]
3 [email protected]
10 [email protected]
3 [email protected]
Tôi muốn xóa địa chỉ không sử dụng từ bảng địa chỉ. Nếu user_id của một địa chỉ không tồn tại trong bảng người dùng, thì địa chỉ không được sử dụng. Có một địa chỉ không được sử dụng trong bảng ví dụ: [email protected]
Tôi mới với SQL, và giải pháp của tôi là xấu xí:
DELETE FROM address
WHERE NOT EXISTS
(SELECT * FROM user WHERE address.user_id = user.user_id);
Phải có cách nào tốt hơn để làm điều đó. Cách tốt nhất để làm điều đó là gì?
sqlite được sử dụng.
Không quá xấu với tôi, bạn muốn cải thiện điều gì - nhìn, hiệu suất? –
Đó là cách tôi đã làm nó. Khi bạn đã thiết lập tính toàn vẹn tham chiếu, nó sẽ không xảy ra nữa. Nếu bạn không/không thể có toàn vẹn tham chiếu thì "xấu xí" là tốt nhất bạn có thể có. –
@paul: Tôi chỉ đang tìm kiếm thông lệ, cách giải quyết vấn đề này. Ngoài ra, tôi đã lo lắng về hiệu suất: Dường như việc tìm kiếm câu lệnh chọn được thực hiện một lần cho mỗi hàng của bảng địa chỉ. – SKi