我在下面有一个查询。
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条记录的所有记录。
请帮我解决这个问题。
答案 0 :(得分: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
的更多信息答案 1 :(得分:0)
如果您只想选择表1中至少有一条记录的Table1中的记录,那么您可以尝试使用内部联接。
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
这将返回table1中具有Table2中至少一条记录的所有数据。 如果table1中的任何行没有表2中的记录,那么这些行将不会显示。