Если список продуктов взят из приложения, и вы также знаете длину списка (в данном случае 5), вы можете найти количество несуществующих продуктов в таблице, например:
SELECT 5 - COUNT(DISTINCT product_id) AS non_existent_products
FROM products
WHERE product_id IN (12, 13, 14, 15, 16)
выход
non_existent_products
2
Если вы не знаете длину списка, вы можете выяснить это, например,
LENGTH('(12, 13, 14, 15, 16)') - LENGTH(REPLACE('(12, 13, 14, 15, 16)', ',', '')) + 1
Демонстрация по dbfiddle
Обновление
Если другие значения product_id
получены из другого запроса (например, SELECT product_id FROM othertable
), вы можете найти количество продуктов в этом результате, которых нет в таблице products
, используя LEFT JOIN
результатов этого запрос с таблицей продуктов и принимая разницу в COUNT
с product_id
из двух. Примерно так:
SELECT COUNT(DISTINCT q.product_id) - COUNT(DISTINCT p.product_id) AS non_existent_products
FROM (SELECT product_id FROM products2) q
LEFT JOIN products p ON p.product_id = q.product_id
Демонстрация на dbfiddle