子查询返回的值超过1.这是不允许的.错误在哪里?

DDu*_*lla 1 sql sql-server

我得到错误:

子查询返回的值超过1.当子查询跟随=,!=,<,<=,>,> =或子查询用作表达式时,不允许这样做.

我很困惑,因为它告诉我错误发生在第2行,我不明白这是怎么回事?

UPDATE .patient_insurance
SET insurance_sequence = CASE def_cob
        WHEN 1 THEN 'Primary'
        WHEN 2 THEN 'Secondary'
        WHEN 3 THEN 'Third'
        WHEN 4 THEN 'Fourth'
        WHEN 5 THEN 'Fifth'
        WHEN 6 THEN 'Sixth'
        WHEN 7 THEN 'Seventh'
        WHEN 8 THEN 'Eigth'
        WHEN 9 THEN 'Ninth'
        END
    ,status_flag = CASE active_ind
        WHEN 'Y' THEN 'Yes'
        ELSE 'No'
        END
    ,insurance_company_id = (
        SELECT id
        FROM insurance
        WHERE companyname = payer_name
        )
    ,insurance_number = policy_nbr
    ,policy_group = group_nbr
FROM person_payer
    ,person
WHERE person.person_id = person_payer.person_id
    AND EXISTS (
        SELECT *
        FROM patient_insurance
        WHERE cast(person_payer_id AS VARCHAR(50)) = isnull(custom_field_22, '')
        )
    AND isnull(custom_field_22, '') = cast(person_payer_id AS VARCHAR(50))
Run Code Online (Sandbox Code Playgroud)

Bec*_*uzz 5

这条线

insurance_company_id =
(select id from insurance where companyname = payer_name),
Run Code Online (Sandbox Code Playgroud)

它告诉您该子查询返回多行,并且它不能将多行的值分配给单行上的单个列.