1

私はこのようなテーブルを持っています

fID_a    fID_b
1        1
1        2
2        2
3        1

そのテーブル内の単一のレコードが 1であるすべてのfID_a場所が必要です。fID_bfID_a

次のようなSQLクエリがあります

select fID_a from tbl 
 where fID_b = 1 
 group by fID_a 
having count(*) = 1

fID_aただし、そのテーブルには 2 つのレコードがあるにもかかわらず、そのクエリには 1 が含まれています。

4

5 に答える 5

4

これを試して

SELECT fID_a FROM tbl
GROUP BY fID_a 
HAVING MAX(fID_b)=1
AND MIN(fID_b)=1
于 2013-07-08T12:10:36.820 に答える
2

これを達成するには、セルフ ジョインを試行する必要があります。

SELECT t1.fID_a 
  FROM tbl t1
  JOIN tbl t2
    ON t1.fid_a = t2.fid_a
   AND t1.fid_b = 1
 GROUP BY t1.fID_a 
HAVING COUNT(*) = 1
于 2013-07-08T12:20:34.333 に答える
0
select fID_a,fID_b 
from tb1, (select fID_a 
             from tb1 
         group by fID_a 
           having count(*) = 1) temp
where tb1.fID_a = temp.fID_a
and fID_b = 1;
于 2013-07-08T12:19:14.393 に答える
-1

これはうまくいくはずです。mysql は have 句の前に where 句を計算するため、クエリは機能しません。

select fID_a from 
       (select fID_a, fID_b 
        from tbl 
        group by fID_a 
        having count(*) = 1) temp 
where fID_b = 1
于 2013-07-08T12:17:15.523 に答える