我有一个查询用于选择表中25个扇区的随机列表。
SELECT T1.idSSecteur, T1.name_fr
FROM (
SELECT *
FROM ssecteurs
WHERE parent =316
OR parent =317
OR parent =318
ORDER BY RAND( )
LIMIT 25
)T1
ORDER BY T1.name_fr
我有另一个名为membres_ssecteurs
的表,其中扇区与每个成员相关联。我想只获得至少有一个成员的部门。我尝试在子查询中添加JOIN
子句。
SELECT T1.idSSecteur, T1.name_fr
FROM (
SELECT ssecteurs.idSSecteur, ssecteurs.name_fr, COUNT(membres_ssecteurs.idmembre)
FROM ssecteurs
INNER JOIN membres_ssecteurs ON ssecteurs.idSSecteur = membres_ssecteurs.idssecteur
WHERE parent =316
OR parent =317
OR parent =318
ORDER BY RAND( )
LIMIT 25
)T1
ORDER BY T1.name_fr
此查询仅返回一行而不是25限制。
答案 0 :(得分:1)
尝试在ORDER BY RAND()之前添加GROUP BY ssecteurs.idSSecteur, ssecteurs.name_fr
和HAVING COUNT > 0
。这将为您提供至少有一个COUNT行:
SELECT T1.idSSecteur,T1.name_fr
FROM (
SELECT ssecteurs.idSSecteur,ssecteurs.name_fr,COUNT(membres_ssecteurs.idmembre)
FROM ssecteurs
INNER JOIN membres_ssecteurs
ON ssecteurs.idSSecteur = membres_ssecteurs.idssecteur
WHERE parent = 316 OR parent = 317 OR parent = 318
GROUP BY ssecteurs.idSSecteur, ssecteurs.name_fr
HAVING COUNT(membres_ssecteurs.idmembre) > 0
ORDER BY RAND() LIMIT 25
) T1
ORDER BY T1.name_fr