提问者:小点点

如果两个表之间的值增加,则MySQL选择一行


我在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手册,但语法应该是正确的...我找不到我做错了什么。


共1个答案

匿名用户

规范化的模式可能如下所示:

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