上記で質問した続編になりますが、スキルにjavaのみもっていて、phpが持っている人は除く愛は、つまり、javaとphp両方持つ人は除いて、javaのみ持つ人を抽出する形です。
回答で教えていただいたSQLを参考にすると、
総当りの結合なので、以下のようにすればよいですかね。
SELECT T1.username AS javaphpuser FROM (SELECT username FROM user WHERE skill = 'java') T1,(SELECT username FROM user WHERE skill != 'php') T2 WHERE T1.username = T2.username
お手数をお掛けしますが何卒よろしくお願い致します。
上の例で良いと思いますよ。
ただし、最初の例でskillにNULL値があるようでしたら
SELECT T1.username AS javaphpuser FROM (SELECT username FROM user WHERE skill = 'java') T1,(SELECT username FROM user WHERE (skill != 'php') or (skill is null) T2 WHERE T1.username = T2.username
とした方が良いかもしれませんね。
select username from t_user where skill = 'java'
minus
(SELECT T1.username FROM (SELECT username FROM t_user WHERE skill = 'java') T1,(SELECT username FROM t_user WHERE skill = 'php') T2 WHERE T1.username = T2.username)
ああ、↑が思いつきました。