暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

SQL 条件查询 Where

Excel VBA练习 2021-06-09
2748

今天写点简单的,SQL中的筛选或者说是条件查询

SQL语句中Where子句,指定了需要返回满足什么标准的信息,条件值是True或者False,从而限制了查询中获取的数据

Where子句一般用于查询添加的条件,可以是单个或者多个

其语法结构为:

    Select 字段名 From 数据来源 Where 字段名 运算符 值

    运算符包含 大于,小于,等于,不等于,大于或等于,小于或等于,In,BetWeen And 等

    如下图所示,这里是一份某学校二年级学生的成绩表

    有点眼熟吧,前面的例子...

    现需要获取1班所有的学生学号,姓名,成绩的信息

    使用函数

      =IFERROR(INDEX($B$2:$D$32,SMALL(IF($A$2:$A$32="1班",ROW($1:$31),100),ROW($A1)),COLUMN(A1)),"")

      或者

        =IFERROR(OFFSET($B$1,SMALL(IF($A$2:$A$32="1班",ROW($1:$31),50),ROW(A1)),COLUMN(A1

        三键结束,函数解法蛮多的..

        使用VBA

          Private Sub t2_Click() 'VBA
          Dim aData, aRes, intx&, inty&, iRow&
          With Worksheets("Sheet2")
          aData = .Range("a1").CurrentRegion
          ReDim aRes(1 To UBound(aData), 1 To UBound(aData, 2))
          iRow = 1
          For intx = 2 To UBound(aData)
          If aData(intx, 1) = "1班" Then
          iRow = iRow + 1
          aRes(iRow, 1) = aData(intx, 1)
          For inty = 2 To UBound(aData, 2)
          aRes(iRow, inty) = aData(intx, inty)
          Next
          End If
          Next
          For inty = 1 To UBound(aData, 2)
          aRes(1, inty) = aData(1, inty)
          Next
          .Range("I12").Resize(iRow, UBound(aRes, 2)) = aRes
          End With
          End Sub

          运行效果

          代码比较简单,就是遍历循环+判断,成立写入结果数组输出


          SQL↓


          1.单条件查询

            strSQL = "Select * From " & strSource & " Where 班级='1班'"

            班级='1班'就是Where语句的筛选条件,它使用了=号来判断字段与条件值是否相等,这里需要注意的是,当条件值为文本时,需要使用''包起来,如果是数值则不用,比如

              strSQL = "Select * From " & strSource & " Where 成绩>=90"

              筛选出成绩大于等于90分的学员信息


              2.多条件查询


                strSQL = "Select * From " & strSource & " Where 班级='1班' And 成绩>=90"

                查询班级=1班并且成绩是大于等于90的学员

                  strSQL = "Select * From " & strSource & " Where 班级='1班' or 成绩>=90 Order By 班级"

                  查询班级=1班或者成绩是大于等于90的学员


                  3.IN运算符


                  如果需要查询1班和2班的学员

                    strSQL = "Select * From " & strSource & " Where 班级 in('1班','2班') Order By 班级"


                    IN运算用于条件表达式进行SQL查询时,可以显示字段值包含在某个集合中的所有数据

                      字段名 IN 集合

                      该集合可以用一个子查询查询得到

                      若要查询集合以外的数据,可以采用以下表达式

                        字段名 Not In 集合

                        值得注意的是在Not In的运算中若出现NULL值,将会导致运算结果与预期不一致


                        4.BetWeen...And范围之间


                        例如需要查询成绩在80-90之间的学员

                          strSQL = "Select * From " & strSource & " Where 成绩 Between 80 And 90"

                          查询成绩在80-90之间,是包含80和90的关系

                          当要找出字段在某一范围内的数据时,可以利用BETWEEN运算符

                            字段名 BetWeen Value1 And Value2

                            Value1 和 Value2 可以是数字也可以是日期,采用该表达式即表示查询满足字段值大于或等于Value1且小于或等于Value2的数据

                            当Value1=Value2时,既表示该范围只有1个值与字段=值相等

                            若要查询指定范围以外的数据,可以采用以下表达式

                              字段名 Not BetWeen Value1 And Value2

                              收工!

                              文章转载自Excel VBA练习,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

                              评论