私は教科書を読んでいますが、私はこの質問を理解できません: すべてのボートを予約した船員を探してください。 EXCEPTコマンド - すべてのボートを予約した船員を探します
- 船員:SID、SNAME、評価、年齢(主:SID)
- ボート:入札(プライマリー:入札)
- 埋蔵:sidの、入札、我々は3つのテーブルを持っている
- 日(プライマリー、SID、入札、日)(sidは船員への外部キーで、入札はボートに外部キーである)、クエリのために
、誰船員を探します「すべてのボートを予約しまし、与えられた答えは次のとおりです。
SELECT S.sname
FROM Sailors S
WHERE NOT EXISTS
((SELECT B.bid
FROM Boats B)
EXCEPT
(SELECT R.bid
FROM Reserves R
WHERE R.sid=S.sid))
私の質問は以下のとおりです。
上記のクエリに何か問題はありますか?私は、MySQL Workbenchにそれを置くとき、それは私が上記の本によって与えられる解決策のほかに
EXCEPTと、構文エラーを持って示して、クエリを実行する他の方法があります:すべての船を予約しました船員を探す
あなたは、この使用してCOUNTとCONCATを行うことができ、
「except」はMySQLでは無効です。 SQL Serverで使用できます。 –
'except'を' NOT EXISTS() 'に書き直すことができます – wildplasser
そして' NOT IN() 'に書き換えることもできます:http://stackoverflow.com/q/26697519/905902 – wildplasser