显示已订阅足球和国际象棋而非网球的员工的详细信息。
SELECT *
FROM employee
WHERE empid IN (SELECT empid
FROM subscription
WHERE facid IN (SELECT facid
FROM facility
WHERE facility = 'Chess'
OR facility = 'Football'))
AND empid NOT IN (SELECT empid
FROM subscription
WHERE facid = (SELECT facid
FROM facility
WHERE facility = 'Tennis'));
SELECT DISTINCT empid
FROM subscription
WHERE facid IN (SELECT facid
FROM facility
WHERE facility = 'Chess'
OR facility = 'Football')
AND facid != (SELECT facid
FROM facility
WHERE facility = 'Tennis');
第一个给出了正确的结果。
答案 0 :(得分:5)
第一次查询: 所有订阅国际象棋或足球但没有订阅网球的员工。
第二次查询: 所有已经订阅国际象棋或足球的女主角。
您的第二个查询是过滤订阅,一个订阅只能链接到一个设施。这意味着,如果您订购国际象棋,当然不会同时订购网球,如果您发现网球订阅,它将被排除,因为它不是国际象棋或足球。任何同时订购国际象棋和网球的EmpID都会被包括在内,因为国际象棋的订阅会因为订阅网球而不被排除在外。