精华内容
下载资源
问答
  • 在关系数据库的领域语言, SQL已然变成了近乎唯一的标准, 而观察SQL语句, 它最大的特色(或者说便利), 其实就是where子语句的运用. Swift语言作为一个新语言, 自然而然的吸取了SQL这种领域语言的特色, 也就是where子...

    在关系数据库的领域语言中, SQL已然变成了近乎唯一的标准, 而观察SQL语句, 它最大的特色(或者说便利), 其实就是where子语句的运用. Swift语言作为一个新语言, 自然而然的吸取了SQL这种领域语言的特色, 也就是where子语句.

    由于Swift语言已经有if语句, 为何还要加入where语句, 我认为是编译解析的方便, 本来Swift语言去掉了if后的条件括号, 已经增加了if语句的解析成本, 还要加上if语句作为子语句存在, 那更加是成本巨大了. 现在的设定下, if作为标准判断语句, 而where是作为判断的子语句, 应该还是清晰的. 但是, where语句应用的地方有很多, 这里我具体罗列一下, 方便大家参考.

     

    1. 作为case的子语句, 在swift ... case中, case 之后, 再加上一个where子语句作为判断条件. 

    比如:

    let box = (200, 200)
    
    switch box {
    case (let w, let h) where w == h :
    	print("well done")
    default:
    	print("do nothing")
    }
    

    在这里, where语句其实就是一个简单的if语句, 是针对case的结果进行再度判断. 

    特别要注意, 在Swift3之前, case语句是可以独立存在, 当然, 其后也能接where语句. 但是, 个人认为这是一个非常愚蠢的设计, 所幸, 苹果去掉了独立case语句的设计.

     

    2. 作为泛型的类型预判断. 

    比如:

    class A <T> where T : UIViewController  {
    	func show(t:T) {
    		print("test")
    	}
    }

    这里的<T> where T: UIViewController 其实也可以缩写成<T:UIViewController>

    值得注意的是, 这里是不能写成T == UIViewController的, 在swift语言中, 有一个强制的规范, 那就是泛型类型, 只能跟另外一个泛型类型进行等号对比, 冒号, 则只能用在Protocol的判断上. 很多初学者, 看到泛型的where子语句中, 又有冒号, 又有等号, 很可能会有此混乱. 

    注意, where子语句, 并不是接着类名称的, 而是放在类名称的最后一部分, Swift在编译的时候, 会跳到最后部分进行解析, 对应之前的泛型模板. 

    如: class A 还有一个父类, 那么, 就要写成class A <T> : B where T : UIViewController, 这个where一定是在最后的位置. 同样的, 函数的泛型预判断, 也能使用where子语句, 也是采用一样的规则. 

     

    3. 作为catch的判断子语句.

    例子如下:

    enum MyError: Error {
    	case whatFuckError(errorNo:Int)
    }
    
    func aa() throws {
    	throw MyError.whatFuckError(errorNo: 1)
    }
    // 前面是伪造的一次throw. 别理他
    
    
    do {
    	try aa()
    } catch MyError.whatFuckError(let e) where e == 1 {
    	print("catch this")
    }

    这里可以看得出来, 其实, 在Swift语言中, catch就是一个变种的switch语句, 所以, 下面的catch语句, 就是一个特异的case语句, 既然where能够作为子语句存在于case语句中, 自然的, 也能作为子语句存在于catch之中. 

     

    上述三种方式, 是比较常用的where子语句使用场景. 在Swift3.0之前, 其实if语句也能使用where子语句, 后来, 大概是苹果自己都觉得这样做有点画蛇添足, 就去掉了, 现在使用逗号来达到类似效果. 

     

    转载于:https://my.oschina.net/wyo/blog/849390

    展开全文
  • 为什么不能再where语句使用聚合函数

    万次阅读 多人点赞 2016-08-15 15:07:42
    1.问题描述 select deptno ,avg(sal) ... 在where 句中使用聚合函数count(*),报出错误:ORA-00934: group function is not allowed here 那是为什么呢? 2.问题解决: 大致解释如下,sql语句的执行过程是:from-->where

    1.问题描述

    select deptno ,avg(sal) from emp where count(*)>3 group by deptno; 在where 句中使用聚合函数count(*),报出错误:ORA-00934: group function is not allowed here

    那是为什么呢?

    2.问题解决:

    大致解释如下,sql语句的执行过程是:from-->where-->group by -->having --- >order by --> select;

    聚合函数是针对结果集进行的,但是where条件并不是在查询出结果集之后运行,所以主函数放在where语句中,会出现错误,

    而having不一样,having是针对结果集做筛选的,所以我门一般吧组函数放在having中,用having来代替where,having一般跟在group by后


    代码:

    select deptno,avg(sal) from emp group by deptno having count(deptno)>3;



    展开全文
  • 1.问题描述 ... 在where 句中使用聚合函数count(*),报出错误:ORA-00934: group function is not allowed here 那是为什么呢? 2.问题解决: 大致解释如下,sql语句的执行过程是:from--&...

    1.问题描述

    select deptno ,avg(sal) from emp where count(*)>3 group by deptno; 在where 句中使用聚合函数count(*),报出错误:ORA-00934: group function is not allowed here

    那是为什么呢?

    2.问题解决:

    大致解释如下,sql语句的执行过程是:from-->where-->group by -->having --- >order by --> select;

    聚合函数是针对结果集进行的,但是where条件并不是在查询出结果集之后运行,所以主函数放在where语句中,会出现错误,

    而having不一样,having是针对结果集做筛选的,所以我门一般吧组函数放在having中,用having来代替where,having一般跟在group by后

     

    聚合函数应该用在having子句中。

    聚合函数如果想用在where中的话,应该只能用子查询来实现(在子查询中进行聚合函数计算,然后在主查询中进行where判断)。

     

    代码:

     

    1. select deptno,avg(sal) from emp group by deptno having count(deptno)>3;  
    展开全文
  • update users set a=1 where id in (1,2,3)这在rails该如何写呢 还想请教一下update users set a=1 where id in (1,2,3)这在rails该如何写呢 云(11753503) ...

    还想请教一下update users set a=1 where id in (1,2,3)这句在rails中该如何写呢

       云(11753503)  18:31:29
                    ActiveRecord::Base.connection.execute(str)

    [上海] Jerry(40578681)  18:34:38
    人家要rails的写法
    [上海] Jerry(40578681)  18:35:08
    User.update_all({:a => 1}, :id => [1,2,3])
    [上海] Jerry(40578681)  18:35:24
    User.update_all({:a => 1}, {:id => [1,2,3]})
       云(11753503)  18:35:55
    你这样写sql中update有几条?
    [上海] Jerry(40578681)  18:36:36
    1
    [上海] Jerry(40578681)  18:36:45
    >> Proposal.update_all({:user_id => 1}, :id => [1,2])
    [上海] Jerry(40578681)  18:36:56
    AREL (1.4ms)  UPDATE "proposals" SET "user_id" = 1 WHERE ("proposals"."id" IN (1, 2))

    posted on 2011-01-31 19:49 lexus 阅读(...) 评论(...) 编辑 收藏

    转载于:https://www.cnblogs.com/lexus/archive/2011/01/31/1948456.html

    展开全文
  • where 子句标准形式的定义 三个布尔连接符(and、or 和 not)的使用是受到严格控制的: not 只适用于简单条件。不能将它应用于包含and 或者 or 的复合条件。and 只用于组合简单条件以及包括 not 的...
  • pdo 参数绑定 where 子句的错误的解决 pdo 参数绑定 where 子句的错误的解决 select * from admin where 1=1 and admin_name = '$user_name' 象这是会出错的,说 rang 什么的参数个数不...
  • developing 发展  developed 发达    idiom  n. 成语,习语;土话 slang  n. 俚语;行话  adj. 俚语的  vi. 用粗话骂  vt. 用俚语说 # 注意 形容词和名词性词性  health n. 健康;卫生;...
  • <p>select student.sname , score.num from score inner join student on score.student_id = student.sid inner join course on...where course.cname = "物理" and score.num = 100</p>
  • 在数据库表一般包含大量的数据,很少需要检索表的所有行。通常是通过指定搜索条件(过滤条件)来提取表的子集。 where子句 通过where后面接的条件来筛选表数据 1. where常用运算符 比较运算符 ...
  • 吐槽:CSDN的文章质量真的是不敢恭维了,全是抄来抄去的,文章千篇一律,找不到自己想要的答案 ...总结两话就是:Where 是一个约束声明,使用Where约束来自数据库的数据,Where是在结果返回之前起作用的,Where.
  • 关于where子句的子查询语法说明

    千次阅读 2014-02-28 14:04:39
    首先说一,大神就不用看了,这都是最基础的知识。 先看一个sql语句 select distinct name from ...这话是选出user表name字段相同的名字出现三次以上的name。 这话的语义到底应该怎么分析呢? 在MYSQL(对其
  • sql中where和group的用法 一、报错 invalid use of group function即“集函数的无效用法” 二、示例 错示例: SELECT sname AS '优秀学生姓名',AVG(score) as '平均成绩' FROM `grade_info` WHERE AVG(score...
  • sql语句中where的引号用法

    千次阅读 2017-05-13 09:37:19
    $where="ip=$ip AND vote_date=$today";    $res = $voteLogModel...在zendframework框架有一个错误,前$where可以执行,后一就有了错误 因为$ip 没有加单引号 引号的使用 请注意,
  • SQL中where 1 = 1的用处

    2019-04-13 14:40:38
    在刚进公司实习时,看见数据分析的小姐姐写sql时加了一句where 1 = 1,我就很好奇这是啥操作,不是多此一举么,后面自己写的时候,就没加这一,结果毫无疑问的错了哈哈哈。 当时小姐姐给我讲了一下,没太懂,今天...
  • mysql中where=1的理解

    2015-08-03 14:55:18
    在公司看老大写的代码时,无意看到这样一句where 1,很不理解,自己查找资料,大致明白了这样写的用意:这种写法主要是在多条件拼接查询时用到: where 1 条件1 条件2….. eg:where 1 and name=’$name’ and ...
  • SQL中where 1=1的用处

    2019-06-15 15:36:49
    在SQL语言,简言之写这就跟没写一样。最近工作频繁遇到这种写法,这里总结一下 两个用处 1、where 的条件为永真 select * from table1 where 1=1 与 select * from table1 完全没有区别,甚至还有其他...
  • 深入理解SQL中where 1=1的用处

    万次阅读 多人点赞 2017-12-26 16:34:36
    在SQL语言,写这么一话就跟没写一样。 在我的理解 SQL中where1=1 有两个用处1、where 的条件为永真select * from table1 where 1=1 与 select * from table1 完全没有区别,甚至还有其他许多写法,1<>2,...
  • sql 语句中where 1=1的作用

    千次阅读 2019-06-09 23:02:42
    在SQL语言,这个条件始终为True,写这一话就跟没写一样。select * from table where 1=1与select * from table完全没有区别,其目的就是使 where 的条件永远为true,得到的结果就是未加约束条件的结果。 在查询...
  • 在SQL语言,这个条件始终为True,写这一话就跟没写一样。select * from table where 1=1与select * from table完全没有区别,其目的就是使 where 的条件永远为true,得到的结果就是未加约束条件的结果。 在查询...
  • AND和OR可在WHERE子语句中把两个或多个条件结合起来 使用OR关键字时: 只要符合这几个查询条件的其中一个条件,这样的记录就会被查询出来。 如果不符合这些查询条件的任何一条,这样的记录将被排除。 使用AND关键字...
  • 含义 where在分组之前就进行选择操作 havinghaving在分组操作之后才进行选择操作,所以...// 下面这是可以的 SELECT COUNT(*) FROM A WHERE A.a1>0 GROUP BY a2; //但是下面就不行 SELECT COUNT(*) FROM A WH...
  • 今天在读他人代码时候发现一这样的代码: select * from EmergencyWarehouse where 1=1 order by warehousenum 对于where 1=1比较迷惑,特意网上求解如下: 1=1 永真, 1。 1 用于只取结构不取数据的场合 ...
  • 如果一筛选语句出现on,where,having三个语句,正确筛选的先后顺序是on-&gt;where-&gt;having。最简单的筛选是:SELECT * FROM 表名 WHERE 条件; 在连接查询里,筛选是SELECT * FROM (表1名 JOIN 表2...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,402
精华内容 560
关键字:

where句中