Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Помогите с запросом SQL

игорь кудимов Ученик (122), на голосовании 1 месяц назад
Добрый день!
Не могу понять почему данный запрос меняет все записи ATTRB_NUM_VALUE мне нужно изменить только одну которая указана в подзапросе

UPDATE QMET_EXT.PIECE_ATTRB
SET ATTRB_NUM_VALUE = 100
WHERE ATTRB_NUM_VALUE IN (SELECT pa.ATTRB_NUM_VALUE
FROM PIECE_ATTRB pa,PIECE p
WHERE pa.PIECE_NUM_ID = p.PIECE_NUM_ID AND ATTRB_CODE IN ('WEIGHT_REMAIN') AND p.SAP _ID IN ('166060534534899')
)
Голосование за лучший ответ
ParazID Оракул (71225) 2 месяца назад
Проблема в том, что подзапрос в предложенном SQL-запросе возвращает все записи, которые соответствуют критериям, а затем основное обновление меняет все эти записи. Скорее всего, вы хотите обновить только одну запись, которая указана в подзапросе, а не все записи, соответствующие условию.

Попробуйте использовать конкретное условие для идентификации нужной записи в `WHERE`, чтобы точно указать, какую запись нужно изменить:

```sql
UPDATE QMET_EXT.PIECE_ATTRB
SET ATTRB_NUM_VALUE = 100
WHERE PIECE_NUM_ID = (
SELECT pa.PIECE_NUM_ID
FROM PIECE_ATTRB pa, PIECE p
WHERE pa.PIECE_NUM_ID = p.PIECE_NUM_ID
AND pa.ATTRB_CODE = 'WEIGHT_REMAIN'
AND p.SAP _ID = '166060534534899'
);
```

Таким образом, вместо использования `ATTRB_NUM_VALUE IN`, мы обновляем запись по конкретному `PIECE_NUM_ID`, который соответствует вашим критериям.
игорь кудимовУченик (122) 2 месяца назад
А так я не проапгрейжу все атрибуты у данного piece?
kaiu Высший разум (118731) 2 месяца назад
ИИ вижу говорит «что подзапрос в предложенном SQL-запросе возвращает все записи», а по человечески при проблеме надо разбить задачу на подзадачи и попробовать их решить по отдельности. Для твоего случая составить запрос
SELECT pa.ATTRB_NUM_VALUE
FROM PIECE_ATTRB pa,PIECE p
WHERE pa.PIECE_NUM_ID = p.PIECE_NUM_ID AND ATTRB_CODE IN ('WEIGHT_REMAIN') AND p.SAP _ID IN ('166060534534899')
)
и проверить внешне, что он возвращает.
ПапаВысший разум (144970) 2 месяца назад
Да ежу понятно, что криворукий автор запроса джойнит по полю данных, у которого 100500 совпадений в разных записях, вместо того, чтобы джойнить по первичному ключу.
Александр Искусственный Интеллект (303499) 2 месяца назад
какой-то съезд жертв ИИ здесь устроили...

автор, ты в своей программулине на "план выполнения запроса" не решился посмотреть?
Похожие вопросы