精华内容
下载资源
问答
  • SQL 面试题:WHERE 和 HAVING、ON 有什么区别?

    万次阅读 多人点赞 2020-04-09 07:42:16
    SQL 中WHERE和HAVING的区别在于:WHERE子句在GROUP BY分组和聚合函数之前对数据行进行过滤;HAVING子句对GROUP BY分组和聚合函数之后的数据行进行过滤。 SQL 中WHERE和ON的区别在于:对于内连接查询,WHERE和ON中的...

    flowers

    SQL 提供了多种对数据进行过滤的方式,包括WHEREHAVING以及ON子句等。虽然它们都能够实现类似的功能,但是你知道它们之间的区别吗?让我们一起来探讨一下。

    除非特殊说明,以下内容适用于各种数据库,包括 MySQL、Oracle、SQL Server、PostgreSQL 以及 SQLite 等;其中的示例表和数据来源于 GitHub

    WHERE 与 HAVING

    WHEREHAVING的根本区别在于:

    • WHERE子句在GROUP BY分组和聚合函数之前对数据行进行过滤;
    • HAVING子句对GROUP BY分组和聚合函数之后的数据行进行过滤。

    因此,WHERE子句中不能使用聚合函数。例如,以下语句将会返回错误:

    -- 查找人数大于 5 的部门
    select dept_id, count(*)
    from employee
    where count(*) > 5
    group by dept_id;
    

    由于在执行WHERE子句时,还没有计算聚合函数 count(*),所以无法使用。正确的方法是使用HAVING对聚合之后的结果进行过滤:

    -- 查找人数大于 5 的部门
    select dept_id, count(*)
    from employee
    group by dept_id
    having count(*) > 5;
    dept_id|count(*)|
    -------|--------|
          4|       9|
          5|       8|
    

    另一方面,HAVING子句中不能使用除了分组字段和聚合函数之外的其他字段。例如,以下语句将会返回错误:

    -- 统计每个部门月薪大于等于 30000 的员工人数
    select dept_id, count(*)
    from employee
    group by dept_id
    having salary >= 30000;
    

    因为经过GROUP BY分组和聚合函数之后,不再存在 salary 字段,HAVING子句中只能使用分组字段或者聚合函数。

    ⚠️SQLite 虽然允许HAVING子句中出现其他字段,但是得到的结果不正确。

    从性能的角度来说,HAVING子句中如果使用了分组字段作为过滤条件,应该替换成WHERE子句;因为WHERE可以在执行分组操作和计算聚合函数之前过滤掉不需要的数据,性能会更好。下面示例中的语句 1 应该替换成语句 2:

    -- 语句 1
    select dept_id, count(*)
    from employee
    group by dept_id
    having dept_id = 1;
    
    -- 语句 2
    select dept_id, count(*)
    from employee
    where dept_id = 1
    group by dept_id;
    

    当然,WHEREHAVING可以组合在一起使用。例如:

    select dept_id, count(*)
    from employee
    where salary > 10000
    group by dept_id
    having count(*) > 1;
    dept_id|count(*)|
    -------|--------|
          1|       3|
    

    该语句返回了月薪大于 10000 的员工人数大于 1 的部门;WHERE用于过滤月薪大于 10000 的员工;HAVING用于过滤员工数量大于 1 的部门。

    WHERE 与 ON

    当查询涉及多个表的关联时,我们既可以使用WHERE子句也可以使用ON子句指定连接条件和过滤条件。这两者之间的主要区别在于:

    • 对于内连接(inner join)查询,WHEREON中的过滤条件等效;
    • 对于外连接(outer join)查询,ON中的过滤条件在连接操作之前执行,WHERE中的过滤条件(逻辑上)在连接操作之后执行。

    对于内连接查询而言,以下三个语句的结果相同:

    -- 语句 1
    select d.dept_name, e.emp_name, e.sex, e.salary 
    from employee e, department d
    where e.dept_id = d.dept_id
    and e.emp_id = 10;
    dept_name|emp_name|sex|salary |
    ---------|--------|---|-------|
    研发部   |廖化    ||6500.00|
    
    -- 语句 2
    select d.dept_name, e.emp_name, e.sex, e.salary 
    from employee e
    join department d on (e.dept_id = d.dept_id and e.emp_id = 10);
    dept_name|emp_name|sex|salary |
    ---------|--------|---|-------|
    研发部   |廖化    ||6500.00|
    
    -- 语句 3
    select d.dept_name, e.emp_name, e.sex, e.salary 
    from employee e
    join department d on (e.dept_id = d.dept_id)
    where e.emp_id = 10;
    dept_name|emp_name|sex|salary |
    ---------|--------|---|-------|
    研发部   |廖化    ||6500.00|
    

    语句 1 在WHERE中指定连接条件和过滤条件;语句 2 在ON中指定连接条件和过滤条件;语句 3 在ON中指定连接条件,在WHERE中指定其他过滤条件。上面语句不但结果相同,数据库的执行计划也相同。以 MySQL 为例,以上语句的执行计划如下:

    id|select_type|table|partitions|type |possible_keys       |key    |key_len|ref  |rows|filtered|Extra|
    --|-----------|-----|----------|-----|--------------------|-------|-------|-----|----|--------|-----|
     1|SIMPLE     |e    |          |const|PRIMARY,idx_emp_dept|PRIMARY|4      |const|   1|     100|     |
     1|SIMPLE     |d    |          |const|PRIMARY             |PRIMARY|4      |const|   1|     100|     |
    

    📝关于各种数据库的执行计划,可以参考这篇文章

    尽管如此,仍然建议将两个表的连接条件放在ON子句中,将其他过滤条件放在WHERE子句中;这样语义更加明确,更容易阅读和理解。对于上面的示例而言,推荐使用语句 3 的写法。

    对于外连接而言,连接条件只能用ON子句表示,因为WHERE子句无法表示外连接的语义。例如:

    select d.dept_name, e.emp_name, e.sex, e.salary 
    from department d
    left join employee e on (e.dept_id = d.dept_id)
    where d.dept_name = '保卫部';
    dept_name|emp_name|sex|salary|
    ---------|--------|---|------|
    保卫部   |        |   |      |
    

    由于“保卫部”没有员工,我们需要使用外连接返回部门的信息;WHERE条件用于过滤 dept_id = 6 的数据;此时,员工表中返回的都是 NULL。

    📝Oracle 支持在WHERE子句的右/左侧使用 (+) 表示左/右外连接,但是无法表示全外连接。

    对于以上语句,如果将WHERE子句中的过滤条件放到ON子句中,结果将会完全不同:

    select d.dept_name, e.emp_name, e.sex, e.salary 
    from department d
    left join employee e on (e.dept_id = d.dept_id and d.dept_name = '保卫部');
    dept_name|emp_name|sex|salary|
    ---------|--------|---|------|
    行政管理部|        |   |      |
    人力资源部|        |   |      |
    财务部   |        |   |      |
    研发部   |        |   |      |
    销售部   |        |   |      |
    保卫部   |        |   |      |
    

    左外连接返回了所有的部门信息,而且员工信息都为 NULL;显然,这不是我们期望的结果。我们可以通过执行计划分析一下为什么会这样,仍然以 MySQL 为例:

    explain analyze
    select d.dept_name, e.emp_name, e.sex, e.salary 
    from department d
    left join employee e on (e.dept_id = d.dept_id and d.dept_name = '保卫部');
    
    -> Nested loop left join  (cost=7.60 rows=30) (actual time=0.098..0.278 rows=6 loops=1)
        -> Table scan on d  (cost=0.85 rows=6) (actual time=0.052..0.057 rows=6 loops=1)
        -> Filter: (d.dept_name = '保卫部')  (cost=0.71 rows=5) (actual time=0.035..0.035 rows=0 loops=6)
            -> Index lookup on e using idx_emp_dept (dept_id=d.dept_id)  (cost=0.71 rows=5) (actual time=0.020..0.032 rows=4 loops=6)
    

    查询计划显示使用 Nested loop left join 方式执行连接操作;对于 department 使用全表扫描的方式返回 6 行记录;对于 employee 表采用索引(idx_emp_dept)查找,同时使用“d.dept_name = ‘保卫部’”作为过滤条件,循环 6 次返回了 0 行记录;最终返回了上面的结果。

    作为对比,我们可以看看将过滤条件放到WHERE子句时的执行计划:

    explain analyze
    select d.dept_name, e.emp_name, e.sex, e.salary 
    from department d
    left join employee e on (e.dept_id = d.dept_id)
    where d.dept_name = '保卫部';
    
    -> Nested loop left join  (cost=1.98 rows=5) (actual time=0.074..0.078 rows=1 loops=1)
        -> Filter: (d.dept_name = '保卫部')  (cost=0.85 rows=1) (actual time=0.049..0.053 rows=1 loops=1)
            -> Table scan on d  (cost=0.85 rows=6) (actual time=0.039..0.047 rows=6 loops=1)
        -> Index lookup on e using idx_emp_dept (dept_id=d.dept_id)  (cost=1.12 rows=5) (actual time=0.021..0.021 rows=0 loops=1)
    

    查询计划显示使用 Nested loop left join 方式执行连接操作;对于 department 通过扫描返回 1 行记录(d.dept_name = ‘保卫部’);对于 employee 表采用索引(idx_emp_dept)查找,同时使用 dept_id=d.dept_id 作为过滤条件,循环 1 次返回了 0 行记录。

    我们再看一个外连接的示例:

    select d.dept_name, e.emp_name, e.sex, e.salary 
    from department d
    left join employee e on (e.dept_id = d.dept_id and e.emp_name = '赵云');
    dept_name |emp_name|sex|salary  |
    ----------|--------|---|--------|
    行政管理部|        |   |        |
    人力资源部|        |   |        |
    财务部    |        |   |        |
    研发部    |赵云    ||15000.00|
    销售部    |        |   |        |
    保卫部    |        |   |        |
    
    select d.dept_name, e.emp_name, e.sex, e.salary 
    from department d
    left join employee e on (e.dept_id = d.dept_id)
    where e.emp_name = '赵云';
    dept_name|emp_name|sex|salary  |
    ---------|--------|---|--------|
    研发部   |赵云    ||15000.00|
    

    第一个查询语句返回了所有的部门信息,以及部门中名叫“赵云”的员工;第二个查询实际上等价于内连接查询。

    📝一般来说,对于左外连接查询,左表的过滤应该使用WHERE子句,右表的过滤应该使用ON子句;右外连接查询正好相反;全外连接的过滤条件使用ON子句。

    更多 SQL 入门知识可以参考这篇文章

    定期更新数据库领域相关文章,欢迎关注❤️、评论📝、点赞👍!

    展开全文
  • ThinkPHP5.0 查询条件where()使用

    千次阅读 2019-11-16 17:48:07
    文章目录where()指定条件字符串条件使用字符串条件直接查询操作使用字符串条件+预处理机制一起使用数组条件(tp官方推荐)普通查询表达式查询表达式含义条件判断查询模糊查询[not] between查询[not] in查询快速查询...

    where()指定条件

    • 链式操作中间方法,指定数据库操作条件 。最常用的方法
    • 参数传递方式(设定id等于10的条件)
      • 方式1,一个参数,字符串条件直接查询
      • 方式2,一个参数,字段名为键的关联数组where(array('id'=>array('eq',10)))
      • 方式3,二个参数,第一个为字段名,第二个参数为字段值where('id',10)
      • 方式4,三个参数,第一个为字段名,第二个为条件,第三个参数为值where('id','eq',10)
    • 返回影响行数
    <?php
    namespace app\index\controller;
    use \think\Controller;
    use \think\Db;
    class Index extends Controller{
        public function index(){
            $data = array('name'=>'xiao1','create_time'=>time());
            $rel = db('data')->where(array('id'=>array('eq',10)))->update($data);//方式1
            $rel = db('data')->where('id',10)->update($data);//方式2
            $rel = db('data')->where('id','eq',10)->update($data);//方式3
            dump($rel);
        }
    }
    
    

    输出结果

    int(1)
    

    字符串条件

    使用字符串条件直接查询操作

    $rel1 = db('data')->where('id=15 and type=0')->select();//方式1
    

    编译结果

    SELECT * FROM `tp_data` WHERE ( id=15 and type=0 )
    

    使用字符串条件+预处理机制一起使用

    $rel1 = db('data')->where("id=:id and type=:type")->bind(['id'=>15,'type'=>0])->select();//方式1
    $rel2 = db('data')->where("id=? and type=?")->bind([15,0])->select();//方式2
    $rel3 = db('data')->where("id=:id and type=:type",array('id'=>$id,'type'=>$type))->select();//方式3
    $rel4 = db('data')->where("id=? and type=?",array($id,$type))->select();//方式4
    
    

    编译结果

    SELECT * FROM `tp_data` WHERE ( id='15' and type='0' )
    

    数组条件(tp官方推荐)

    普通查询

    $map = array(
                'id'=>15,
                'type'=>0,
            );
    $rel1 = db('data')->where($map)->select();//方式1
    
    

    编译结果

    SELECT * FROM `tp_data` WHERE `id` = 15 AND `type` = 0
    

    表达式查询

    • $map[‘字段1’] = array(‘表达式’,‘查询条件1’);
    • $map[‘字段2’] = array(‘表达式’,‘查询条件2’);
    • db(‘table’)->where($map)->select();

    表达式含义

    表达式不分大小写,支持的查询表达式有下面几种,分别表示的含义是

    表达式含义
    EQ等于(=)
    NEQ不等于(<>)
    GT大于(>)
    EGT大于等于(>=)
    LT小于(<)
    ELT小于等于(<=)
    LIKE模糊查询
    [NOT] BETWEEN(不在)区间查询
    [NOT] IN(不在)IN 查询

    条件判断查询

    示例1:查询id<10type=0的数据

    $map = array(
                'id'=>array('lt',10),
                'type'=>array('eq',0),
            );
    $rel1 = db('data')->where($map)->select();//方式1
    

    编译结果

    SELECT * FROM `tp_data` WHERE `id` < 10 AND `type` = 0 
    

    模糊查询

    示例2:查询name like %xiao%

    $map = array(
                'name'=>array('like','%xiao%'),
            );
    $rel1 = db('data')->where($map)->select();//方式1
    

    编译结果

    SELECT * FROM `tp_data` WHERE `name` LIKE '%xiao%' 
    

    示例3:查询name like %xiao% or name like %rufeike%

    $map = array(
                'name'=>array('like',array('%xiao%','%rufeike%'),'OR'),
            );
    $rel1 = db('data')->where($map)->select();//方式1
    

    编译结果

    SELECT * FROM `tp_data` WHERE (`name` LIKE '%xiao%' OR `name` LIKE '%rufeike%')
    

    [not] between查询

    $map = array(
                'id'=>array('between',array(1,2))//数组
            );
    $rel1 = db('data')->where($map)->select();//方式1
    
    
    $map = array(
                'id'=>array('between','1,2')//字符串
            );
    $rel2 = db('data')->where($map)->select();//方式2
    

    编译结果

    SELECT * FROM `tp_data` WHERE `id` BETWEEN 1 AND 2
    

    [not] in查询

    $map = array(
                'id'=>array('in','1,2')
            );
    $rel1 = db('data')->where($map)->select();//方式1
    
    $map = array(
                'id'=>array('in',array(1,2))
            );
    $rel2 = db('data')->where($map)->select();//方式2
    

    编译结果

     SELECT * FROM `tp_data` WHERE `id` IN (1,2)
    

    快速查询

    不同字段相同条件的查询

    //查询id=1 且 type = 1的数据
    $map = array(
                'id&type'=>1
            );
    $rel1 = db('data')->where($map)->select();//方式1
    //查询id=1 或 type = 1的数据
    $map = array(
                'id|type'=>1
            );
    $rel1 = db('data')->where($map)->select();//方式1
    

    编译结果

    SELECT * FROM `tp_data` WHERE ( `id` = 1 AND `type` = 1 ) 
    SELECT * FROM `tp_data` WHERE ( `id` = 1 OR `type` = 1 )
    

    区间查询

    同一字段,不同条件查询

    示例1 id > 1 AND id < 10

    $map = array(
                'id'=>array(array('gt',1),array('lt',10))
            );
    $rel1 = db('data')->where($map)->select();//方式1
    

    编译结果

     SELECT * FROM `tp_data` WHERE ( `id` > 1 AND `id` < 10 )
    

    示例2 id < 10 OR id > 12

    $map = array(
                'id'=>array(array('lt',10),array('gt',12),'OR')
            );
    $rel1 = db('data')->where($map)->select();//方式1
    

    编译结果

    SELECT * FROM `tp_data` WHERE ( `id` < 10 OR `id` > 12 )
    

    多次调用

    • where()方法可以多次调用
    $map = array(
                'id'=>array('gt',5)
            );
            $map2 = array(
                'id'=>array('lt',15),
                'type'=>array('eq',0),
            );
    $rel1 = db('data')->where($map)->where($map2)->select();//方式1
    

    编译结果

     SELECT * FROM `tp_data` WHERE ( `id` > 5 AND `id` < 15 ) AND `type` = 0
    
    展开全文
  • 在PowerShell中使用where命令查找文件

    万次阅读 2021-08-24 00:24:01
    CMD中的where命令 where命令显示符合搜索模式的文件位置。在默认情况下,搜索是在当前目录和 PATH 环境变量指定的路径中执行的。 where命令对应文件的路径为C:\Windows\System32\where.exe。 where命令案例 C:\Users...

    CMD中的where命令

    where命令显示符合搜索模式的文件位置。在默认情况下,搜索是在当前目录和 PATH 环境变量指定的路径中执行的。
    where命令对应文件的路径为C:\Windows\System32\where.exe

    where命令案例

    C:\Users\Administrator>where python
    C:\Users\Administrator\AppData\Local\Programs\Python\Python37\python.exe
    

    where命令帮助

    C:\Users\Administrator>where /?
    
    WHERE [/R dir] [/Q] [/F] [/T] pattern...
    
    描述:
        显示符合搜索模式的文件位置。在默认情况下,搜索是在当前目录和 PATH
        环境变量指定的路径中执行的。
    
    参数列表:
        /R       从指定目录开始,递归性搜索并显示符合指定模式的文件。
    
        /Q       只返回退出代码,不显示匹配文件列表。(安静模式)
    
                 匹配文件。(安静模式)
    
        /F       显示所有相配文件并用双引号括上。
    
        /T       显示所有相配文件的文件的文件。
    
        pattern  指定要匹配的文件的搜索模式。通配符 * 和 ? 可以用在模式中。
                 也可以指定 "$env:pattern""path:pattern" 格式; 其中
                 "env" 是环境变量,搜索是在 "env" 变量的指定的路径中执行的。
                 这些格式不应该跟 /R 一起使用。此搜索也可以用将 PATHEXT 变
                 量扩展名附加于此模式的方式完成。
    
         /?      显示此帮助消息。
    
      注意: 如果搜索成功,此工具返回错误级别 0; 如果不成功,返回 1; 如果失
            败或发生错误,返回 2。
    
    示例:
        WHERE /?
        WHERE myfilename1 myfile????.*
        WHERE $windir:*.*
        WHERE /R c:\windows *.exe *.dll *.bat
        WHERE /Q ??.???
        WHERE "c:\windows;c:\windows\system32:*.dll"
        WHERE /F /T *.dll
    

    PowerShell中的where命令

    PowerShell中执行where命令无效。

    PS C:\Users\Administrator> where python.exe
    

    根据如下命令可知,在PowerShellwhere命令对应的是Where-Object命令,优先级比where.exe高。CMD里的where命令本来全名就是where.exe,只不过可以省略.exe而已。所以实现需要CMD里的where命令功能显式地使用where.exe

    PS C:\Users\Administrator> gcm where -All
    
    CommandType     Name                                               Version    Source
    -----------     ----                                               -------    ------
    Alias           where -> Where-Object
    Application     where.exe                                          10.0.17... C:\Windows\system32\where.exe
    

    PowerShell中执行where.exe命令有效。

    PS C:\Users\Administrator> where.exe python.exe
    C:\ProgramData\Anaconda3\python.exe
    C:\Users\Administrator\AppData\Local\Programs\Python\Python37\python.exe
    

    PowerShell中类似where的命令

    PowerShell中的gcmget-command命令与CMD中的where命令相似,注意加上-All才会显示所有满足要求的文件。

    PS C:\Users\Administrator> gcm python.exe -All
    
    CommandType     Name                                               Version    Source
    -----------     ----                                               -------    ------
    Application     python.exe                                         3.8.815... C:\ProgramData\Anaconda3\python.exe
    Application     python.exe                                         3.7.215... C:\Users\Administrator\AppData\Local\Programs\Python\Python37\python.exe
    

    gcm命令是get-command命令的别名。

    PS C:\Users\Administrator> get-command python.exe -All
    
    CommandType     Name                                               Version    Source
    -----------     ----                                               -------    ------
    Application     python.exe                                         3.8.815... C:\ProgramData\Anaconda3\python.exe
    Application     python.exe                                         3.7.215... C:\Users\Administrator\AppData\Local\Programs\Python\Python37\python.exe
    

    总结

    PowerShell中使用类似where命令的查找文件功能的方法有三种:

    • where.exe 文件搜索字符串
    • gcm 文件搜索字符串 -All
    • get-command 文件搜索字符串 -All
    展开全文
  • Python中numpy的np.where()函数

    千次阅读 2019-11-13 16:33:36
    numpy.where() 有两种用法: 1. np.where(condition, x, y) 满足条件(condition),输出x,不满足输出y。 import numpy as np a = np.arange(10) print(a) aa = np.where(a, 1, -1) print(aa) aaa = np.where(a > ...

    numpy.where() 有两种用法:

    1. np.where(condition, x, y)
    满足条件(condition),输出x,不满足输出y。

    import numpy as np
    a = np.arange(10)
    print(a)
    aa = np.where(a, 1, -1)
    print(aa)
    aaa = np.where(a > 5, 1, -1)
    print(aaa)
    
    [0 1 2 3 4 5 6 7 8 9]
    [-1  1  1  1  1  1  1  1  1  1]
    [-1 -1 -1 -1 -1 -1  1  1  1  1]
    
    np.where([[True,False], [True,True]],    # 官网上的例子
                 [[1,2], [3,4]],
                 [[9,8], [7,6]])
    
    array([[1, 8],
           [3, 4]])
    ``
    `
    上面这个例子的条件为[[True,False], [True,False]],分别对应最后输出结果的四个值。第一个值从[1,9]中选,因为条件为True,所以是选1。第二个值从[2,8]中选,因为条件为False,所以选8,后面的以此类推。
    
    同理,再看下面的一个例子:
    
    ```python
    a = 10
    np.where([[a > 5,a < 5], [a == 10,a == 7]],
                 [["chosen","not chosen"], ["chosen","not chosen"]],
                 [["not chosen","chosen"], ["not chosen","chosen"]])
    
    array([['chosen', 'chosen'],
           ['chosen', 'chosen']], dtype='<U10')
    

    2. np.where(condition)
    只有条件 (condition),没有x和y,则输出满足条件 (即非0) 元素的坐标 。这里的坐标以tuple的形式给出,通常原数组有多少维,输出的tuple中就包含几个数组,分别对应符合条件元素的各维坐标。

    一维的情况:

    a = np.array([2, 4, 6, 8, 10])
    print(np.where(a > 5))
    print(type(np.where(a > 5)))
    print(a[np.where(a > 5)])
    print(type(a[np.where(a > 5)]))
    
    (array([2, 3, 4], dtype=int64),)
    <class 'tuple'>
    [ 6  8 10]
    <class 'numpy.ndarray'>
    

    二维的情况:

    a = np.arange(27).reshape(3,3,3)
    a
    
    array([[[ 0,  1,  2],
            [ 3,  4,  5],
            [ 6,  7,  8]],
    
           [[ 9, 10, 11],
            [12, 13, 14],
            [15, 16, 17]],
    
           [[18, 19, 20],
            [21, 22, 23],
            [24, 25, 26]]])
    
    np.where(a > 5)
    
    (array([0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2],
           dtype=int64),
     array([2, 2, 2, 0, 0, 0, 1, 1, 1, 2, 2, 2, 0, 0, 0, 1, 1, 1, 2, 2, 2],
           dtype=int64),
     array([0, 1, 2, 0, 1, 2, 0, 1, 2, 0, 1, 2, 0, 1, 2, 0, 1, 2, 0, 1, 2],
           dtype=int64))
    
    a[np.where(a > 5)]
    array([ 6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22,
           23, 24, 25, 26])
    

    所以满足条件的坐标为(0, 2, 0), (0, 2, 1)…

    所以np.where会输出每个元素的对应的坐标,因为原数组有三维,所以tuple中有三个数组。

    展开全文
  • FluentMybatis Where语法(一) | FluentMybatis实践

    千次阅读 多人点赞 2021-11-08 20:22:15
    继续测试fm的其他语法,where语法的使用。 数据准备 随便弄几条数据。 Where基本条件语法 先看看where的基本语法,例如:> , = , < , >= , <= , <> , between , not between , in , ...
  • C# where&whereif

    千次阅读 2019-03-04 14:28:27
    一、Where 扩展的不足 如下界面,可通过姓名、编号和地址对人员进行模糊查询: 这里写图片描述 我们通常会写出如下代码: public IQueryable&lt;Person&gt; Query(IQueryable&lt;Person&gt; source,...
  • $positionuse=Position_use:: where('id',$id) -&gt;WhereBetween('start_time', [$start_time, $end_time]) -&gt;orWhereBetween('end_time', [$start_time, $end_time]) ...
  • select * from student where sex='男' and age=20;   SELECT * FROM Persons WHERE City='Beijing' SELECT * FROM Persons WHERE Year&gt;1965 递增: SELECT Company, OrderNum...
  • numpy高级教程之np.where和np.piecewise

    万次阅读 多人点赞 2018-09-25 16:07:35
    总结:通过上面的讲述,已经了解到了np.where函数的强大之处,它的本质上就是选择操作,但是如果我们自己编写条件运算,使用if-else或者是列表表达式这样的语句,效率低下,故而推荐使用np.where。 二、np....
  • MySQL查询优化之一-WHERE语句优化

    千次阅读 2018-01-18 13:51:34
    MySQL查询优化之一-WHERE语句优化 如需转载请标明出处:http://blog.csdn.net/itas109 QQ技术交流群:12951803 环境: MySQL版本:5.5.15 操作系统:windows 本文讨论WHERE语句的优化。 这些示例使用SELECT...
  • where() 定义:指定查询条件,返回带新查询条件的新的集合引用 我的理解:where(),其中括号中指的是查询条件,最终返回符合该条件的数据记录 官方示例用法 const _ = db.command const result = await db.collection...
  • Thinkphp中where()条件的使用

    千次阅读 2018-11-15 08:42:49
    1.Thinkphp中where()条件的使用  总是有人觉得,thinkphp的where()就是写我要进行增加、查询、修改、删除数据的条件,很简单的,其实我想告诉你,where()是写条件语句的,但是他很不简单,严密的条件语句,...
  • ", "jinzhu", "22").Find(&users) 注意:当使用struct查询时,GORM将只查询那些具有值的字段 // Struct db.Where(&User{Name: "zhangyang", Age: 20}).First(&user) //// SELECT * FROM users WHERE name = "zhang...
  • MySQL中where条件查询(where

    千次阅读 2019-07-15 18:39:35
    1、查询价格不是800的所有商品(where/!=) SELECT * FROM product WHERE price != 800 2、查询商品价格在200到1000之间所有商品(between) SELECT * FROM product WHERE price BETWEEN 200 AND 1000; SELECT * ...
  • sql数据库多表查询之 where和INNER JOIN

    千次阅读 2019-03-27 16:11:59
    在多表查询中,一些SQL开发人员更喜欢使用WHERE来做join,比如: SELECT a.ID, b.Name, b.Date FROM Customers a, Sales b WHERE a.ID = b.ID; 1 缺点:在上面语句中,实际上是创建了两张表的笛卡尔积,所有可能的...
  • postgresql where in改写为 where any

    千次阅读 2019-06-11 17:23:51
    通常 where in sql where column in (field-1,field-2,...,field-n); 稍高级 where in sql where column in (select column from table where condition) 更高级 where in sql where column = any(array(select ...
  • SQL教程——where语法

    千次阅读 2020-11-30 14:12:46
    摘要:本文主要SQL语句中where的语法和使用 Where (1)、按条件表达式筛选 条件运算符:> < = != <> >= <= (2)、按逻辑表达式筛选 逻辑运算符: && || and or not (3...
  • =null时会被mybatis的where标签去除掉多余的and关键字,生成的sql如下: SELECT prod_id prodId, vend_id vendId, prod_name prodName, prod_desc prodDesc FROM Products WHERE prod_id = ? AND prod_name = ? 注: ...
  • SQL查询过滤Where子句用法

    万次阅读 2019-09-01 11:01:38
    大多数情况下,查询关注的是表中所有行的一个子集,需要用到Where过滤,本文主要介绍过滤的条件连接符(AND, OR, (),NOT),条件类型(相等条件、范围条件、成员条件、通配条件)以及当列名包含NULL值的注意事项。
  • 有查询条件就查询, 多个查询条件,只要有查询,就...  $where['type'] = $sotype;  }   //合作单位  if($companyid){   $where['hezuodanwei'] = $companyid;  }  //关键词 模糊查询 $type...
  • 问题描述:laravel where 条件拼接 Like出错,搜索不到要搜索的内容。 问题代码: // 作物 $crop_class_id = $request->crop_class_id; if(!empty($crop_class_id)){ $where['crop_class_id'] ...
  • https://blog.csdn.net/ethan_10/article/details/80536088 ... having子句与where有相似之处但也有区别,都是设定条件的语句。 在查询过程中聚合语句(sum,min,max,avg,count)要比having子句...
  • Clickhouse WHERE 和 PREWHERE 子句

    千次阅读 2020-07-09 09:34:28
    参考: https://clickhouse.tech/docs/en/sql-reference/statements/select/prewhere/ https://clickhouse.tech/docs/en/sql-reference/statements/select/where/
  • 4、根据where条件导出表 咱们平常开发的时候,经常会遇到类似的需求,表巨大,直接导出来成本太高了,那就只能加where条件来进行导出了,具体案例如下: mysqldump -h [hostname] -u [username] -p --skip-lock-...
  • Pytorch中的torch.where函数

    千次阅读 2020-08-20 19:18:06
    首先我们看一下Pytorch中torch.where函数是怎样定义的: @overload def where(condition: Tensor) -> Union[Tuple[Tensor, ...], List[Tensor]]: ... torch.where函数的功能如下: torch.where(condition, x...
  • 对MYSQL的explain中extra using where的理解

    千次阅读 2020-05-11 02:00:49
    来看一下mysql5.7和mysql8.0z中对using where的解释: A WHERE clause is used to restrict which rows to match against the next table or send to the client. 原谅我的愚蠢,还是一头雾水。(有知道的大佬还...
  • MySQL之where查询

    千次阅读 2019-05-10 13:50:08
    使用where子句对表中的数据筛选,并将筛选结果输出。 二、语法 select 字段列表 from 表名 where语句 ; 三、分类 1、按关系运算符筛选 等于 = 大于 > 大于等于>= 小于< 小于等于<= 不等于!= ...
  • !... !... !... !... 看了一下百度资料,都说left join先执行on条件,生成临时表,最后才where...而且where字段不走索引的话(图5),执行计划先筛选了b表,这不是说先执行的where吗? 分不够了。。。
  • laravel where orwhere的写法

    千次阅读 2018-12-24 11:38:02
    $model = Model::where('id','=',$id)  -&gt;where(function($query){  $query-&gt;where('status','&lt;','1')  -&gt;orWhere(function($query){  $query-&gt;where('status'...
  • 数据库中简单的SQL语句以及where字句

    千次阅读 2019-08-03 15:45:53
    数据库中简单的SQL语句以及where字句 select * from dept; select * from emp; --查询表中指定字段中的值 select 字段名1,字段名2,.....from表名,其中*代表所有 select empno from emp; select empno,ename from...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,891,198
精华内容 1,156,479
关键字:

where