Похоже, вы могли бы извлечь выгоду из функции EXISTS
. Может работать что-то вроде следующего:
SELECT CASE WHEN EXISTS(SELECT 1
FROM inv_y
WHERE (ip IN (SELECT identifier
FROM inv_x)
OR hostname IN (SELECT identifier
FROM inv_x))
AND hostname LIKE '%eb%'
) = 1 THEN "True"
ELSE "False"
END AS Present;
Вот демонстрация этой работы: SQL Fiddle
Обратите внимание, что вышеизложенное можно еще больше упростить, если вы можете работать с 1 или 0 вместо true или false. EXISTS
возвращает 1, если строка найдена, и 0, если нет, и CASE
существует просто для перевода этого значения в «True» или «False», так что вы можете просто получить следующее:
SELECT EXISTS(SELECT 1
FROM inv_y
WHERE (ip IN (SELECT identifier
FROM inv_x)
OR hostname IN (SELECT identifier
FROM inv_x)
)
AND hostname LIKE '%eb%') AS Present;