簡體   English   中英

在SQL Server中從子表中獲取計數大於0的記錄

[英]get records from child table having count greater than 0 in sql server

我在下面有一個查詢。

select 
    *,
    (select COUNT(*) from Table2 hv where hv.CompanyID=hc.CompanyID) VacancyCount
from Table1 hc
where
    hc.Deleted = 0
order by hc.NameLang1, VacancyCount desc

它總是給我正確的記錄。我只想在這里添加一個子句,即僅從Table1中選擇那些在Table2中至少有一個記錄的記錄。當前它返回所有在Table2中具有0個記錄的記錄。

請幫我解決這個問題。

嘗試這個

SELECT 
    *,
    (SELECT COUNT(*) FROM Table2 hv WHERE hv.CompanyID=hc.CompanyID) VacancyCount
FROM Table1 hc
WHERE EXISTS (SELECT hv.CompanyID FROM Table2 hv WHERE hv.CompanyID=hc.CompanyID)
   AND hc.Deleted = 0
ORDER BY hc.NameLang1, VacancyCount DESC;

有關EXISTS的更多信息,請訪問http://dev.mysql.com/doc/refman/5.7/en/exists-and-not-exists-subqueries.html

如果您只想從Table1中選擇在Table2中至少有一條記錄的記錄,則可以嘗試使用內部聯接。

select 
    hc.*,
    COUNT(.....some column in hv to be count....) as VacancyCount 
from 
  Table1 hc
  INNER JOIN Table2 hv ON hc.CompanyID ON hv.CompanyID
where
    hc.Deleted = 0
GROUP BY (....group all your hc column here....)
order by hc.NameLang1, VacancyCount desc

這將返回表1中在表2中至少有一條記錄的所有數據。 如果表1中有任何行在表2中沒有記錄,則該行將不會顯示。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM