1

Employee という名前のテーブルがあり、employee_id、manager_id、salary 列があります。私のクエリは

select employee_id,salary,last_name from employees M
WHERE EXISTS 
(SELECT employee_id FROM employees W
WHERE (W.manager_id = M.employee_id) AND W.SALARY>10000)
order by employee_id asc

このクエリの意味は何ですか?

a) 給与が 10000 を超えるすべてのマネージャー

b) 少なくとも 1 人の従業員の年収が 10000 を超えるすべてのマネージャー

4

4 に答える 4

2

サブクエリが行を返す場合、EXISTSサブクエリはTRUEであり、NOT EXISTSサブクエリはFALSEです。例えば:

SELECT column1 FROM t1 WHERE EXISTS (SELECT * FROM t2);

伝統的に、EXISTSサブクエリは で始まりますが、 orSELECT *で始まることもあります。MySQLはそのようなサブクエリのリストを無視するため、違いはありません。SELECT 5SELECT column1SELECT

あなたの場合、オプションBは正しいです。

于 2013-05-14T12:20:53.877 に答える
0

少なくとも 1 人の従業員が 10000 を超える収入を得ているすべてのマネージャーを意味するように思われます。実際のテーブルなどを見ないと、なんとも言えません。

次のように考えてください。

従業員 W は manager_id = 従業員 M の employee_id を持ち、10000 を超える収入を得る方法は W です。

つまり、M はマネージャー、W は従業員、W は 10000 以上の収入を得ています。

于 2013-05-14T12:22:51.680 に答える