В запросе с комбинацией из 2 полей - PullRequest
3 голосов
/ 05 апреля 2019

У меня есть список устройств в документах Cosmos DB (тысячи), Make и SerialNumber - это уникальный идентификатор для каждого актива.

[{
    "make": "CAT",
    "serialNumber": "A1",
    "NAME": "CAR"
},
{
    "make": "ZAT",
    "serialNumber": "B1",
    "NAME": "BUS"
}, {
    "make": "CAT",
    "serialNumber": "C1",
    "NAME": "TRUCK"
}, {
    "make": "ABC",
    "serialNumber": "A1",
    "NAME": "PAVER"
}, {
    "make": "ZAT",
    "serialNumber": "A1",
    "NAME": "BIKE"
}
]

Мне нужно получить полную информацию об активе из вышеуказанных документов на основена входе устройства ввода ниже.

[{
    "make": "CAT",
    "serialNumber": "A1"
},
{
    "make": "ZAT",
    "serialNumber": "B1"
}, {
    "make": "CAT",
    "serialNumber": "C1"
}
]

Я использую запрос ниже, чтобы получить полную информацию (я знаю, что запрос ниже неверен).В общем, я получаю серийный номер устройства 100s в одном запросе.

select * from t where serialNumber in (A1,B1,C1) and make in (CAT,ZAT,CAT)

Можно ли написать запрос IN с комбинацией из двух полей?

Ожидаемый результат

A1 CAT

B1 ZAT

C1 CAT

1 Ответ

1 голос
/ 08 апреля 2019

Pankaj Rawat, используйте этот запрос sql, он может удовлетворить ваши требования.

SELECT c FROM c where
ARRAY_CONTAINS([
    {"serialNumber":"A1","make":"CAT"},
    {"serialNumber":"B1","make":"ZAT"},
    {"serialNumber":"C1","make":"CAT"}
    ],
    {"serialNumber": c.serialNumber,
       "make":c.make}
    )

Вывод:

enter image description here

...