简体   繁体   English

如何在联接和顺序中更新sql

[英]how update in sql in a join and order by

mi consult it's: mi咨询是:

update enfermedades
    join
pacientes ON pacientes.id = enfermedades.paciente_id
    join
consultas ON consultas.paciente_id = pacientes.id
    join
signos_sintomas ON signos_sintomas.consulta_id = consultas.id 

set 
    enfermedades.diabetes = 1,
    bmi = signos_sintomas.imc_kg_m2,
    promedio_presion_sistolica = ((pa_de_pie_izquierda + pa_sentado_izquierda) / 2),
    microalbuminuria = 0,
    macroalbuminuria = 0,
    fibrilacion = 0,
    ecv = 0,
    duracion = 15,
    antiht = 0,
    diabetes = 0
where
    enfermedades.riesgo_diabetes_mellitus = 0
        and pacientes.situacion = 0
        and riesgo_diabetes_dano_organo_blanco = 0
        and signos_sintomas.created in (select 
            signos_sintomas.created,consultas.created
        from
            signos_sintomas
                join
            consultas ON consultas.id = signos_sintomas.consulta_id
                join
            pacientes ON pacientes.id = consultas.paciente_id
        where
            pacientes.id = pacientes.id
        order by signos_sintomas.created , consultas.created desc);

say

ERROR 1241 (21000): Operand should contain 1 column(s) 错误1241(21000):操作数应包含1列

as consulting but with that descending order for columns created 作为咨询,但对于创建的列按降序排列

You're using a sub-select in an IN clause that's returning multiple columns. 您正在返回多个列的IN子句中使用子选择。 Such a subselect can return only ONE column, which is used for the IN() comparison: 这样的子选择只能返回ONE列,该列用于IN()比较:

and signos_sintomas.created in (select 
            signos_sintomas.created,consultas.created
                    ^^^--field #1       ^---field #2
        from

if you return multiple columns, the DB server has no way of knowing WHICH column should be used for the IN() comparison. 如果返回多个列,则数据库服务器无法知道应该将WHICH列用于IN()比较。

change this 改变这个

   and signos_sintomas.created in (select 
        signos_sintomas.created,consultas.created

to

   and signos_sintomas.created in (select 
        signos_sintomas.created

yould select just one column , not two . 您只能选择一列,而不是两列。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM