문제
다음 (단축 쿼리)이 있습니다.
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
대신 절?
제휴하지 않습니다 StackOverflow