Tôi đang cố gắng học SQL và đang gặp khó khăn trong việc hiểu các câu lệnh EXISTS. Tôi đã xem qua trích dẫn này về "tồn tại" và không hiểu điều gì đó:
Sử dụng toán tử tồn tại, truy vấn con của bạn có thể trả về không, một hoặc nhiều hàng và điều kiện chỉ cần kiểm tra xem truy vấn con có trả về bất kỳ hàng nào hay không. Nếu bạn nhìn vào mệnh đề select của truy vấn con, bạn sẽ thấy rằng nó bao gồm một chữ (1) duy nhất; vì điều kiện trong truy vấn chứa chỉ cần biết có bao nhiêu hàng được trả về, dữ liệu thực tế mà truy vấn con trả về là không liên quan.
Điều tôi không hiểu là làm thế nào để truy vấn bên ngoài biết truy vấn con đang kiểm tra hàng nào? Ví dụ:
SELECT *
FROM suppliers
WHERE EXISTS (select *
from orders
where suppliers.supplier_id = orders.supplier_id);
Tôi hiểu rằng nếu id từ bảng nhà cung cấp và đơn hàng khớp nhau, truy vấn con sẽ trả về true và tất cả các cột từ hàng phù hợp trong bảng nhà cung cấp sẽ được xuất ra. Những gì tôi không hiểu là cách truy vấn con giao tiếp với hàng cụ thể nào (giả sử hàng có id nhà cung cấp 25) sẽ được in nếu chỉ trả về giá trị true hoặc false.
Đối với tôi, dường như không có mối quan hệ nào giữa truy vấn bên ngoài và truy vấn con.