当前位置: 首页 > 知识库问答 >
问题:

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

松灿
2023-03-14

我在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个答案

任绪
2023-03-14

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

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
 类似资料:
  • 问题内容: 我正在尝试在2列之间选择一个值。这是我的数据集 我的目标是(如果我的值为2)是选择 ID为1 (在from和to之间)的行。所以这是我正在使用的查询: 这是MySQL执行此查询时返回的结果: 我正在寻找的结果如下: 我尝试使用<和>等。但是,我总是得到两个结果。任何帮助将非常感激。 问题答案: 所以,您不希望下限具有包容性,对吗?

  • 问题内容: 我必须检查特定时间是否介于两次(打开和关闭时间)之间。 打开和关闭时间在数据库中保存为与工作日ID(而不是日期)相关的“开始”和“结束”。 所以我的问题是,我有两种不同的情况,第一种情况是结束时间大于开始时间,例如end = 19:00:00和start = 09:00:00 但也可以是结束= 06:00:00和开始= 20:00:00 那么检查时间是否介于两次之间的性能方法是什么?

  • 如果没有数据,如何根据两个表中两个列的值选择新列。 提前谢了。

  • 问题内容: 我想做这样的事情。 我能怎么做 ?我不知道该选择元组来编辑它还是找出元组索引? 有什么帮助吗? 问题答案: 那是组织事情的非常奇怪的方式。如果存储在字典中,这很容易: 这段更新计数字典的代码是Python中常见的“模式”。常见的是,创建了一个特殊的数据结构,以使其变得更加容易: 如果您使用键访问,而该键尚不在中,则该键会自动添加一个默认值。将采取调用您传递,并调用它来获得默认值。在这种

  • 问题内容: 尝试通过一些非常有限的知识和经验来进行SQL查询。尝试了很多我通过搜索发现的内容,但没有得出我想要的结果。 我有四个表: 回复:KITS-[KIT_NO]和[ITEM_NO]都位于ITEMS表中。它们的串联是PK。 我想选择ORDERS,ORDERS.DATE,ORDER_DETAILS.ITEM_NO,ITEMS.DESC 没问题。一些简单的内部联接,我在路上。 困难在于在selec

  • 问题内容: 我从csv创建一个DataFrame,如下所示: DataFrame有一个日期列。有没有一种方法来创建一个新的DataFrame(或仅覆盖现有的DataFrame),该DataFrame仅包含日期值在指定日期范围内或两个指定日期值之间的行? 问题答案: 有两种可能的解决方案: 使用布尔型掩码,然后使用 将日期列设置为,然后使用 使用布尔型掩码: 确保是系列: 制作一个布尔型面具。可以,