Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用SQLITE将表中的值映射到正确的行_Sql_Sqlite - Fatal编程技术网

如何使用SQLITE将表中的值映射到正确的行

如何使用SQLITE将表中的值映射到正确的行,sql,sqlite,Sql,Sqlite,我有以下数据: supplier count 120 50 121 45 129 151 0.5 我有一张桌子如下 Catergory Discription number_of_suppliers A count NULL B 0<=count<40

我有以下数据:

supplier   count
120         50
121          45
129         
151          0.5
我有一张桌子如下

Catergory  Discription   number_of_suppliers
   A          count NULL                                  
   B          0<=count<40                              
   C          40.1<count     
我想将其映射如下:

Catergory  Discription   number of suppliers
   A          count NULL       1                     //129
   B          0<=count<40           1                    //151
   C          40.1<count           2                    //120,121
我知道应该是这样的:

Update categories set number_of_suppliers = sum(case when count>0 and count<40 then 1 else 0 end ) where Category=A
from suppliers
但这意味着我需要运行此查询3次。。每排一个。
有没有一种方法可以通过一个更新查询来实现这一点?

对于现有的数据结构,这很难做到。相反,修复第二个表,使其看起来像

Category      Description     min_suppliers   max_suppliers
   A          count NULL      0               0                              
   B          0<count<40      1               40                          
   C          40.1<count      41              NULL
然后,您可以按以下方式进行更新:

update categories
    set category = (select t2.category
                    from t2
                    where categories.num_suppliers >= t2.min_suppliers and
                          (categories.num_suppliers <= t2.max_suppliers or t2.max_suppliers is null)
                   );

嗨,我想到了,但是这个有问题。0与null不同。它应该是:null到null,0到40,40.1到无限