2013-04-30 31 views
1

如何英里請教它的:更新SQL的加入,以便通過

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); 

ERROR 1241(21000):操作數應包含1列(S)

的諮詢,但與列是降序創建

回答

0

改變這種

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

and signos_sintomas.created in (select 
     signos_sintomas.created 

yould只選擇一列,而不是兩個。

1

您使用的是子選擇在IN條款多數民衆贊成在返回多列。這樣的子查詢只能返回ONE列,它用於IN()比較:

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

如果返回多列,數據庫服務器無法知道哪一列的方式應該用於IN()比較。

+0

感謝,但我需要更新。並說:行匹配:960更改:0警告:0 – geronimo76 2013-04-30 17:44:21

+0

那麼你將不得不重建您的查詢。一般來說,大多數子查詢可以寫成正常的join +查詢,這將允許您根據需要使用子查詢表中的許多字段。 – 2013-04-30 18:41:29

+0

因爲是http://stackoverflow.com/questions/16326902/sql-how-query-in-sql-order-by-created-in-this-case需要在這裏 – geronimo76 2013-05-01 21:35:05