문제

다음 (단축 쿼리)이 있습니다.

SELECT 
    `Statistics`.`StatisticID`,
    COUNT(DISTINCT `Flags`.`FlagType`) AS `FlagCount`
FROM `Statistics`
LEFT JOIN `Flags` ON `Statistics`.`StatisticID` = `Flags`.`StatisticID`
WHERE `FlagCount` = 0
GROUP BY `Statistics`.`StatisticID`
ORDER BY `SubmittedTime` DESC
LIMIT 0, 10

자나, 둘 다 FlagCount = 0 또는 COUNT(Flags.FlagType) 작업 WHERE 절. 나는 a를 사용하는 것에 대해 생각했다 SET 그러나 나는 그것을 어떻게 쿼리에 추가 할 것인지 잘 모르겠습니다. 어떤 아이디어?

감사,

도움이 되었습니까?

해결책

어쩌면 작동하지 않으면 하위 쿼리를 시도 할 수 있습니다.

SELECT 
    `Statistics`.`StatisticID`,
    COUNT(DISTINCT `Flags`.`FlagType`) AS `FlagCount`
FROM `Statistics`
    LEFT JOIN `Flags` ON `Statistics`.`StatisticID` = `Flags`.`StatisticID`
WHERE `Statistics`.`StatisticID`
  IN (SELECT `Flags`.`StatisticID` 
      FROM `Flags`
      HAVING COUNT(DISTINCT `Flags`.`FlagType`) <= 3
      GROUP BY `Flags`.`StatisticID`
  )
GROUP BY `Statistics`.`StatisticID`
ORDER BY `SubmittedTime` DESC
LIMIT 0, 10

다른 팁

이 시도:

SELECT 
    `Statistics`.`StatisticID`,
    COUNT(DISTINCT `Flags`.`FlagType`) AS `FlagCount`
FROM `Statistics`
LEFT JOIN `Flags` ON `Statistics`.`StatisticID` = `Flags`.`StatisticID`
                     And `FlagCount` = 0
GROUP BY `Statistics`.`StatisticID`
ORDER BY `SubmittedTime` DESC
LIMIT 0, 10

@eed3si9n

이것은 부분적으로 작동하지만 작동하지 않는 것처럼 보이는 <= 3이어야합니다.

또한 HAVING 조항은 마지막으로 실행되며 필요한만큼 많은 결과를 반환하지 않습니다 ( LIMIT). 내가 이것을 할 수있는 방법이 있습니까? WHERE 대신 절?

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top