Оператор SQL - ВЫБЕРИТЕ инверсию этого запроса
У меня есть этот запрос, и я хочу выбрать обратное, что выбрать.
SELECT Guide.id FROM Guide
INNER JOIN GuideAvailability ON Guide.id = GuideAvailability.guideId
WHERE GuideAvailability.startDate IN (1377946800)
GROUP BY GuideAvailability.guideId
HAVING COUNT(DISTINCT GuideAvailability.id) = 1
Есть ли простой способ решить мою проблему?
3 ответа
Решение
Просто используйте этот запрос:
SELECT *
FROM Guide where id NOT IN (
SELECT Guide.id
FROM Guide
INNER JOIN GuideAvailability ON Guide.id = GuideAvailability.guideId
WHERE GuideAvailability.startDate IN (1377946800)
GROUP BY GuideAvailability.guideId
HAVING COUNT(DISTINCT GuideAvailability.id) = 1
)
Может быть, вы ищете это
SELECT Guide.id FROM Guide
INNER JOIN GuideAvailability ON Guide.id = GuideAvailability.guideId
WHERE GuideAvailability.startDate NOT IN (1377946800) GROUP BY GuideAvailability.guideId HAVING COUNT(DISTINCT GuideAvailability.id) <> 1
Вы можете перевернуть bool.;)
Я делаю это, когда у меня есть большое количество там, где фильтры и есть определенный набор фильтров исключения. Я пишу их внутри дела и делаю =1
исключить и =0
чтобы найти то, что я исключил.
SELECT Guide.id FROM Guide
INNER JOIN GuideAvailability ON Guide.id = GuideAvailability.guideId
WHERE ( case when GuideAvailability.startDate IN (1377946800) then 1 else 0 end) = 0
GROUP BY GuideAvailability.guideId
HAVING COUNT(DISTINCT GuideAvailability.id) = 1