SQL:在这种情况下如何按 sql 顺序查询
select
consultas.id as a,
consultas.clasificacion as cl,
consultas.paciente_id as b,
consultas.created,imc_kg_m2 as im
from
consultas
join
signos_sintomas
on
signos_sintomas.consulta_id = consultas.id
where paciente_id in
(select pacientes.id from pacientes where pacientes.id < 30 order by pacientes.id desc)
and
consultas.created in
(select consultas.created from consultas order by consultas.created asc )
and
imc_kg_m2 is not null
;
+-----+----+----+---------------------+------+
| a | cl | b | created | im |
+-----+----+----+---------------------+------+
| 198 | 1 | 1 | 2012-07-25 00:00:00 | 25.6 |
| 2 | 1 | 2 | 2012-05-30 00:00:00 | 25.5 |
| 2 | 1 | 2 | 2012-05-30 00:00:00 | 25.5 |
| 3 | 1 | 3 | 2012-05-30 00:00:00 | 21.1 |
| 3 | 1 | 3 | 2012-05-30 00:00:00 | 21.3 |
| 579 | 2 | 4 | 2012-10-03 00:00:00 | 22.9 |
| 579 | 2 | 4 | 2012-10-03 00:00:00 | 22.9 |
| 127 | 1 | 5 | 2012-07-16 00:00:00 | 28.7 |
| 127 | 1 | 5 | 2012-07-16 00:00:00 | 28.9 |
| 127 | 1 | 5 | 2012-07-16 00:00:00 | 28.9 |
| 498 | 1 | 6 | 2012-09-19 00:00:00 | 29.7 |
| 498 | 1 | 6 | 2012-09-19 00:00:00 | 29.7 |
| 200 | 1 | 7 | 2012-07-25 00:00:00 | 0 |
| 149 | 1 | 8 | 2012-07-18 00:00:00 | 23.6 |
| 149 | 1 | 8 | 2012-07-18 00:00:00 | 23.6 |
| 4 | 1 | 9 | 2012-06-16 00:00:00 | 0 |
| 4 | 1 | 9 | 2012-06-16 00:00:00 | 24.9 |
| 5 | 2 | 10 | 2012-06-26 00:00:00 | 24.9 |
| 7 | 2 | 11 | 2012-06-26 00:00:00 | 25 |
| 6 | 2 | 12 | 2012-06-26 00:00:00 | 24.8 |
| 648 | 2 | 13 | 2012-10-22 00:00:00 | 27.5 |
| 8 | 2 | 14 | 2012-06-26 00:00:00 | 34 |
| 8 | 2 | 14 | 2012-06-26 00:00:00 | 32.8 |
| 9 | 2 | 15 | 2012-06-26 00:00:00 | 32.8 |
| 9 | 2 | 15 | 2012-06-26 00:00:00 | 32.8 |
| 9 | 2 | 15 | 2012-06-26 00:00:00 | 32.2 |
| 10 | 2 | 16 | 2012-06-26 00:00:00 | 29.8 |
| 10 | 2 | 16 | 2012-06-26 00:00:00 | 30.4 |
| 11 | 2 | 17 | 2012-06-26 00:00:00 | 28.1 |
| 11 | 2 | 17 | 2012-06-26 00:00:00 | 28.1 |
| 156 | 2 | 19 | 2012-07-18 00:00:00 | 29.5 |
| 12 | 2 | 20 | 2012-06-26 00:00:00 | 0 |
| 12 | 2 | 20 | 2012-06-26 00:00:00 | 0 |
| 12 | 2 | 20 | 2012-06-26 00:00:00 | 0 |
| 13 | 1 | 21 | 2012-06-26 00:00:00 | 29 |
| 13 | 1 | 21 | 2012-06-26 00:00:00 | 29 |
| 14 | 3 | 22 | 2012-06-26 00:00:00 | 32.5 |
| 15 | 2 | 23 | 2012-06-26 00:00:00 | 30.4 |
| 16 | 2 | 24 | 2012-06-26 00:00:00 | 0 |
| 17 | 11 | 25 | 2012-06-26 00:00:00 | 28 |
| 18 | 2 | 26 | 2012-06-26 00:00:00 | 23.9 |
| 19 | 1 | 27 | 2012-06-27 00:00:00 | 32 |
| 19 | 1 | 27 | 2012-06-27 00:00:00 | 32 |
| 19 | 1 | 27 | 2012-06-27 00:00:00 | 34.4 |
| 21 | 1 | 28 | 2012-06-27 00:00:00 | 29.1 |
| 21 | 1 | 28 | 2012-06-27 00:00:00 | 29.1 |
| 23 | 1 | 29 | 2012-06-27 00:00:00 | 26.8 |
| 23 | 1 | 29 | 2012-06-27 00:00:00 | 26.3 |
+-----+----+----+---------------------+------+
我尝试限制但说:ERROR 1235 (42000): 这个版本的 MySQL 还不支持 'LIMIT &IN/ALL/ANY/SOME 子查询'我只需要查询一个 imc_kg_m2 值但最近创建的
I try to make a limit but Say: ERROR 1235 (42000): This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery' i need the query only one imc_kg_m2 value but most recent created
update pacientes
join
enfermedades 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
bmi = signos_sintomas.imc_kg_m2,
enfermedades.promedio_presion_sistolica = ((pa_de_pie_izquierda + pa_sentado_izquierda) / 2),
enfermedades.microalbuminuria = 0,
enfermedades.macroalbuminuria = 0,
enfermedades.fibrilacion = 0,
enfermedades.ecv = 0,
enfermedades.duracion = 15,
enfermedades.antiht = 0,
enfermedades.diabetes = 1
where
enfermedades.riesgo_diabetes_mellitus = 1
and pacientes.situacion = 0
and riesgo_diabetes_dano_organo_blanco = 0
and signos_sintomas.created in (select
signos_sintomas.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);
值 null 我很自然,我需要更新 enfermedades 中最近的 imc_kg_m2
the values null i'ts natural by i'm need the recent imc_kg_m2 in the update enfermedades
+------+-----+------+------+------+------+------+------+------+------+
| bmi | p | d1 | d2 | d3 | ecv | m1 | m2 | f | pa |
+------+-----+------+------+------+------+------+------+------+------+
| NULL | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 132 |
| NULL | 3 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 105 |
| NULL | 30 | 0 | 0 | 0 | NULL | NULL | 0 | NULL | 160 |
| NULL | 153 | 0 | 0 | 0 | NULL | NULL | 0 | NULL | 160 |
| NULL | 175 | 0 | 0 | 0 | NULL | NULL | 0 | NULL | 160 |
| NULL | 343 | 0 | 0 | 0 | NULL | NULL | 0 | NULL | 160 |
| NULL | 520 | 0 | 0 | 0 | NULL | NULL | 0 | NULL | 160 |
| NULL | 867 | 0 | 0 | 0 | NULL | NULL | 0 | NULL | 160 |
+------+-----+------+------+------+------+------+------+------+------+
我开始怀疑这样的咨询不能解决我的问题,依赖关系和现在存在的关系,我不能做任何其他方式来改变它会影响我的模型和视图模型.
I begin to suspect that such consultation is not the solution to my problem, dependencies and the relationship that exists right now, I can not do it any other way to change it would affect me the model and the view model.
推荐答案
我不确定我是否完全理解目标,但我试了一下......
Not sure I totally understand the aim, but I had a go...
select
consultas.id as a,
consultas.clasificacion as cl,
consultas.paciente_id as b,
consultas.created,
imc_kg_m2 as im
from consultas
join signos_sintomas on signos_sintomas.consulta_id = consultas.id
join (select pacientes.id from pacientes where pacientes.id < 30) p on consultas.paciente_id = p.id
where imc_kg_m2 = (select imc_kg_m2 from consultas where created = (select max(created) from consultas where imc_kg_m2 is not null));
为了解决这个错误,我为子查询设置了别名并加入了它们.我删除了一个,因为我无法弄清楚它为什么在那里.我还添加了 where
来执行您要求的操作.如果它不符合您的要求,请发表评论.
To resolve the error I aliased the subqueries and joined them instead. I removed one because I couldn't work out why it was there. I also added the where
to do something like what you are requesting. Comment if it doesn't do what you want.
相关文章