0
userid       pageid
123          100
123          101
456          101
567          100

100 と 101 のすべてを返したいのですが、123 だけを返してuseridください。pageidこれはおそらく非常に簡単ですが、私はそれを理解することはできません! 私は試した:

SELECT userid
FROM table_name 
WHERE pageid=100 AND pageid=101

しかし、それは私に0の結果を与えます。助けてください

4

5 に答える 5

1

userid最後の編集によると、pageid101 と 101 が存在するすべての (異なる) を見つけたいと考えています。使用できますEXISTS

SELECT DISTINCT userid
FROM TableName t1 
WHERE t1.userid=123
AND EXISTS(
  SELECT 1 FROM TableName t2
  WHERE t2.userid=t1.userid AND pageid = 100
 )
AND EXISTS(
  SELECT 1 FROM TableName t2
  WHERE t2.userid=t1.userid AND pageid = 101
 )

DEMO

と混同ANDしていると思いますがOR、これは複数のレコードを返します。

SELECT DISTINCT userid
FROM TableName 
WHERE pageid=100 OR pageid=101

DEMO

USERID
123
567

DISTINCT重複は不要なので、以前は重複を削除していたことに注意してください。

于 2013-09-02T09:56:40.140 に答える
1
SELECT userid
FROM Table1 
WHERE pageid IN (100,101)
GROUP BY userid HAVING COUNT(distinct pageid) = 2;

サンプルフィドル

于 2013-09-02T09:58:37.520 に答える
1

and の代わりに or を使用できます

Select userid
from table
where pageid=100 or pageid=101

明確な結果を得たい場合は、distinct キーワードを使用できます。例えば

Select distinct userid
from table
where pageid=100 or pageid=101
于 2013-09-02T09:59:42.013 に答える