0

myspace または facebook ではなく、myspace と facebook の両方をアプリとして持つテーブルを返そうとしてsecret-identifierいますが、現在は 2 番目のオプションしか取得できません。これはこれまでの私のコードです

SELECT `secret-identifier`
FROM MyFavs__APP
WHERE app IN (
  SELECT DISTINCT app
  FROM MyFavs__APP
  WHERE `secret-identifier`='aha'
) 

そして、私が得ている結果は、実際に両方のアプリを持っている4つを含むシークレット識別子(facebookまたはmyspaceのいずれかを持っている)の膨大なリストです。いずれかのアプリのみを使用しているすべての人を取り除くにはどうすればよいですか?

4

1 に答える 1

2

you need to join the table to itself for both the myspace and facebook options:

create table  MyFavs__APP (
    secret_identifier int, 
    app varchar(16)
);

insert into MyFavs__APP (secret_identifier, app) values
    (1, 'facebook'),
    (1, 'myspace'),
    (2, 'facebook'),
    (3, 'myspace'),
    (4, 'myspace'),
    (4, 'facebook');

select distinct favs.secret_identifier
from   MyFavs__APP favs,
       MyFavs__APP m,
       MyFavs__APP f
where favs.secret_identifier = m.secret_identifier
and   favs.secret_identifier = f.secret_identifier
and   m.app = 'myspace' 
and   f.app = 'facebook';

+-------------------+
| secret_identifier |
+-------------------+
|                 1 |
|                 4 |
+-------------------+
2 rows in set (0.00 sec)
于 2013-06-14T05:39:00.580 に答える