У меня проблема с запросом в postgreSql. Ниже приведен запрос.
UPDATE t_e20so1_fieldrulethen AS fthen
SET c_thenfieldid = t1.c_fieldschemaid
FROM t_sys_fieldschema AS t1
WHERE fthen.c_lyrathenfieldid = t1.c_lyraid
AND fthen.c_rulefor = 5
AND t1.c_fieldtype = 18
AND t1.c_tablegroupsid IN (
CASE
WHEN fthen.c_iffieldid = t1.c_id THEN (SELECT
c_targettableid
FROM t_sys_tablegroups
WHERE c_parentid = 'c0b2f85c-bc93-466b-a54d-b1330440db98')
ELSE (SELECT c_targettableid
FROM t_sys_tablegroups
WHERE c_parentid =
'c0b2f85c-bc93-466b-a54d-b1330440db98')
END );
Согласно приведенному выше запросу, я обновляю t_e20so1_fieldrulethen
таблицу из t_sys_fieldschema
. Одно из условий для проверки - t_sys_fieldschema.c_tablegroupsid
должен иметь определенные значения, и я извлекаю их из таблицы t_sys_tablegroups
.
Выше запрос дает мне ошибку, как показано ниже:
ERROR: more than one row returned by a subquery used as an expression
SQL state: 21000
Здесь, если я удаляю регистр из запроса (ниже я имею в виду), он работает правильно.
UPDATE t_e20so1_fieldrulethen AS fthen
SET c_thenfieldid = t1.c_fieldschemaid
FROM t_sys_fieldschema AS t1
WHERE fthen.c_lyrathenfieldid = t1.c_lyraid
AND fthen.c_rulefor = 5
AND t1.c_fieldtype = 18
AND t1.c_tablegroupsid IN (SELECT c_targettableid
FROM t_sys_tablegroups
WHERE
c_parentid = 'c0b2f85c-bc93-466b-a54d-b1330440db98')
Теперь у меня есть только один запрос на выборку в предложении «IN».