Я пытаюсь обновить базу данных, используя один запрос SQL с динамическим вводом массива c и несколькими условиями WHERE, которые также являются динамическими c. Пробовал различные SQL запросы и ссылки на блоги, но не смог найти ни одного запроса, соответствующего моей потребности.
StudentsTable будет иметь 3 столбца (studentID, Dept, contactNo, contactEmail)
Приложение переднего плана будет вызывать API с массивом (длина которого может варьироваться), затем я должен обновить contactNo Поля 'и' contactEmail 'для StudentsTable с' studentID + dept 'в условии WHERE.
Пример ввода:
[
{"studentId": 100, "dept": "CS", "phone": 123456789, "email":"a@gmail.com" },
{"studentId": 7810, "dept": "PS", "phone": 434242424, "email":"b@gmail.com" },
{"studentId": 510, "dept": "EE", "phone": 849384983, "email":"vu@gmail.com" },
{"studentId": 980, "dept": "CS", "phone": 543535353, "email":"z@gmail.com" },
]
Пробовал ниже, но не знаю, как сделать его динамическим c без использования forEach l oop.
UPDATE StudentsTable
SET contactNo = CASE
WHEN student_id = 100 AND dept = "CS" THEN 123456789
WHEN student_id = 980 AND dept = "CS" THEN 543535353
END
WHERE student_id IN (100, 980) AND dept IN "CS"
SET contactEmail = CASE
WHEN student_id = 100 AND dept = "CS" THEN "a@gmail.com"
WHEN student_id = 980 AND dept = "CS" THEN "z@gmail.com"
END
WHERE student_id IN (100, 980) AND dept IN "CS"