[Hỏi] EXISTS Clause in SQL ( postgreSQL)

Rùa Kendy

New Member
25/6/14
4
2
3
26
Mình có 1 đoạn sql ví dụ như dưới:
Code:
SELECT *
FROM SINHVIEN
WHERE (SINHVIEN_ID = 'SV01')
    AND EXISTS (
        SELECT * FROM LOP, SINHVIEN
            WHERE SINHVIEN.SINHVIEN_ID = LOP.SINHVIEN_ID
                AND LOP.LOP_ID= 'L01'
        )
Khi thực hiện SELECT vào DB thì tất cả số record của table SINHVIEN sẽ được select ra.
Trong khi thực hiện subquery:
Code:
SELECT * FROM LOP, SINHVIEN
            WHERE SINHVIEN.SINHVIEN_ID = LOP.SINHVIEN_ID
                AND LOP.LOP_ID= 'L01'
thì chỉ SELECT ra 1 record. Và nếu như subquery trên mà không SELECT ra record nào thì cả đoạn SQL cũng không ra record.

- Khi mình SQL thay đổi 1 chút thành:
Code:
SELECT *
FROM SINHVIEN
WHERE (SINHVIEN_ID = 'SV01')
    AND EXISTS (
        SELECT * FROM LOP
            WHERE SINHVIEN.SINHVIEN_ID = LOP.SINHVIEN_ID
                AND LOP.LOP_ID= 'L01'
        )
Thì việc SELECT sẽ ra 1 record như mong đợi.

Question: Vậy cả nhà cho hỏi là mệnh đề EXISTS trong trường hợp này hoạt động như thế nào?