2014-03-27 145 views
0

爲什麼說這種說法適用於自己的,但是當它是一個子查詢的一部分,它說無效使用組功能爲什麼在子查詢中這個MySQL語句不工作?

select count(cid) 
    from qualification q 
     inner join faculty f 
      on q.fid=f.fid 
      where fname='Berry' 
group by 
     f.fid; 

的我會怎樣修改,以適合子查詢?

整個查詢 -

select fid, fname from faculty 
where fid in 
(select fid from qualification where count(cid)= 
    (select count(cid) from qualification q inner join faculty f on 
    q.fid=f.fid where fname='Berry' group by f.fid)); 

邏輯:列表FNAME和所有教職員工誰可以教所有貝里教授能教

+3

你能顯示整個查詢嗎? – 2014-03-27 07:59:20

+0

聚合函數過濾器必須與'HAVING'而非'WHERE'一起使用 –

回答

1

對我來說,問題的課程FID使用count()WHERE

where count(cid)= 
(select count(cid) from qualification q inner join faculty f on 
q.fid=f.fid where fname='Berry' group by f.fid) 

您可以嘗試將其更改爲像這樣處理

HAVING count(cid)= 
(select count(cid) from qualification q inner join faculty f on 
q.fid=f.fid where fname='Berry' group by f.fid) 

但我不明白邏輯。如果你解釋更多,我們會建議更好的解決方案

相關問題