Результатом вашего подзапроса является массив [], но ключевое слово IN
просто поддерживает (). Я пробовал это sql:
SELECT * FROM c WHERE ARRAY_CONTAINS((SELECT VALUE c.item.id FROM c WHERE c.item.name = 'ABC' GROUP BY c.item.id),c.item.id,false)
Но он получает 0 строк. Причина в том, что функция ARRAY_CONTAINS () не поддерживает подзапрос в качестве аргумента. В качестве обходного пути: вы должны использовать 2 sql для достижения цели.
Сначала выполните sql SELECT VALUE c.item.id FROM c WHERE c.item.name = 'ABC' GROUP BY c.item.id
, чтобы получить массив выходов [].
Затем передайте результат вам на первом шаге перейдите к ARRAY_CONTAINS () и выполните следующую команду sql
SELECT * FROM c WHERE ARRAY_CONTAINS(['1','2','3'],c.item.id,false)
Кстати, подзапрос в базе данных cosmos, в отличие от базы данных отношений. Подробнее о подзапросе см. здесь документ .