Cosmos DB Запрос документов, которые должны иметь два значения для одного поля - PullRequest
2 голосов
/ 21 апреля 2020

Здравствуйте, немного застрял на данный момент. Допустим, у меня есть простая коллекция (может быть, не очень хорошо сложенная ...):

- id
- user_id
- application_id
- version
- [other fields]

Я хотел бы получить все user_id для указанного c application_id, который должен был использовать два указанных c версии приложения.

Если только запросить указанную c версию, это довольно просто

select c.user_id from c where c.application_id='123456' and c.version='1.0'

Но если я просто попытаюсь добавить другую версию (с оператором AND) результат пустой, и это нормально. Я пытался с оператором JOIN, но не удалось заставить его работать.

Позвольте также сказать, что мой SQL фон старый и плохой, и я не говорю о специфике Cosmos DB SQL

1 Ответ

2 голосов
/ 23 апреля 2020

Но я хочу быть в состоянии обнаружить user_id, который использовал две версии определенного c приложения

Возможно, я понял вашу точку зрения. Вы имеете в виду ваши данные, как показано ниже:

enter image description here

Идентификатор пользователя имеет v1 и v2, идентификатор пользователя B имеет v1. Теперь вы просто хотите выбрать A, потому что A пересекает v1 и v2. Боюсь, это требование не может быть реализовано с помощью одного запроса sql. Вы можете обратиться к ниже sql:

SELECT count(c.version) as count,c.userid FROM c
where (c.version='v1' or c.version='v2')
group by c.userid 

enter image description here

Итак, вы можете узнать, какой идентификатор пользователя пересек v1 и v2, основываясь на count =2. Просто я oop результат сам.

...