我在mysql中有一个表,上面有骨质疏松症患者的ID和他们通过不同的访问获得的KL等级。我想知道一个查询来选择和识别谁是快速进步者(当比较两个不同的访问时(V00 vs V06;V03 vs V08;V06 vs V10),kl等级从0-1级上升到等级>=3级)和没有快速进步者(当比较相同的访问时,kl等级从0-1级上升到2级)。列侧,如果是右膝或左膝的值,请特别说明。
下面是我的表(表名:KL_grade):
我尝试了这个指令来选择快速进度器,但它并没有返回所有的。
SELECT a.id, a.SIDE
from kl_grade a
left join (SELECT b.id, b.SIDE
from kl_grade b
where V03XRKL BETWEEN 0 and 1 and V08XRKL >= 3) b
on a.ID = b.id and a.SIDE = b.SIDE
left join (SELECT c.id, c.SIDE
from kl_grade c
where V06XRKL BETWEEN 0 and 1 and V10XRKL >= 3) c
on a.ID = c.id and a.SIDE = c.SIDE
where V00XRKL BETWEEN 0 and 1 and V06XRKL >= 3
UNION
SELECT a.id, a.SIDE
from kl_grade a
right join (SELECT b.id, b.SIDE
from kl_grade b
where V03XRKL BETWEEN 0 and 1 and V08XRKL >= 3) b
on a.ID = b.id and a.SIDE = b.SIDE
right join (SELECT c.id, c.SIDE
from kl_grade c
where V06XRKL BETWEEN 0 and 1 and V10XRKL >= 3) c
on a.ID = c.id and a.SIDE = c.SIDE
where V00XRKL BETWEEN 0 and 1 and V06XRKL >= 3;
编辑:为了在访问0和6之间查找快速进度,我尝试了:
select ID
CASE
when V00XRKL < 2 and V06XRKL > 2
then 'rapid progressor'
END
from kl_grade kg
但作为回报,我得到一个语法错误:
SQL错误[1064][42000]:您的SQL语法有错误;查看与您的MySQL服务器版本相对应的手册,了解在第3行“when V00XRKL<2和V06XRKL>2然后”rapid progressor“from kl_grade kg”附近使用的正确语法
我看了mysql手册,但语法应该是正确的...我找不到我做错了什么。
规范化的模式可能如下所示:
table_a
ID SIDE
1 1
1 2
2 1
2 2
3 1
3 2
table_b
id table_a_ID v_type value
1 2 V00XRKL 1
2 2 V00XRKL 1
3 3 V00XRKL 1
4 2 V03XRKL 1
5 2 V03XRKL 1
6 3 V03XRKL 1
7 2 V05XRKL 2
8 2 V05XRKL 2
9 3 V05XRKL 2
10 3 V05XRKL 2
11 1 V06XRKL 3
12 1 V06XRKL 2
13 2 V06XRKL 2
14 2 V06XRKL 2
15 3 V06XRKL 2
16 3 V06XRKL 2
17 1 V08XRKL 3
18 1 V08XRKL 3
19 2 V08XRKL 3
20 2 V08XRKL 3
21 3 V08XRKL 2
22 3 V08XRKL 3
23 1 V08XRKL 4
24 1 V08XRKL 4
25 2 V08XRKL 4
26 2 V08XRKL 4
27 3 V08XRKL 2
28 3 V08XRKL 4