• 1027.查询-where子句


    WHERE 子句的语法是

    WHERE search_condition

    这里的search_condition是任意返回一个boolean类型值的值表达式。

    在完成对FROM子句的处理之后,生成的虚拟表的每一行都会对根据搜索条件进行检查。

    如果该条件的结果是真,那么该行被保留在输出表中;否则(也就是说,如果结果是假或空)就把它抛弃。

    搜索条件通常至少要引用一些在FROM子句里生成的列;虽然这不是必须的,但如果不引用这些列,那么WHERE子句就没什么用了。

    注意:内连接的连接条件既可以写在WHERE子句也可以写在JOIN子句里。例如,这些表表达式是等效的:

    FROM a, b WHERE a.id = b.id AND b.val > 5

    和:

    FROM a INNER JOIN b ON (a.id = b.id) WHERE b.val > 5

    或者可能还有:

    FROM a NATURAL JOIN b WHERE b.val > 5

    你想用哪个只是一个风格问题。FROM子句里的JOIN语法可能不那么容易移植到其它SQL数据库管理系统中。

    对于外部连接而言没有选择:它们必须在FROM子句中完成。

    外部连接的ON或USING子句不等于WHERE条件,因为它导致最终结果中行的增加(对那些不匹配的输入行)和减少。

    这里是一些WHERE子句的例子:

    SELECT ... FROM fdt WHERE c1 > 5

    SELECT ... FROM fdt WHERE c1 IN (1, 2, 3)

    SELECT ... FROM fdt WHERE c1 IN (SELECT c1 FROM t2)

    SELECT ... FROM fdt WHERE c1 IN (SELECT c3 FROM t2 WHERE c2 = fdt.c1 + 10)

    SELECT ... FROM fdt WHERE c1 BETWEEN (SELECT c3 FROM t2 WHERE c2 = fdt.c1 + 10) AND 100

    SELECT ... FROM fdt WHERE EXISTS (SELECT c1 FROM t2 WHERE c2 > fdt.c1)

    在上面的例子里,fdt是从FROM子句中派生的表。 那些不符合WHERE子句的搜索条件的行会被从fdt中删除。

    请注意我们把标量子查询当做一个值表达式来用。 和任何其它查询一样,子查询里可以使用复杂的表表达式。

    同时还请注意fdt在子查询中也被引用。只有在c1也是作为子查询输入表的生成表的列时,才必须把c1限定成fdt.c1。

    但限定列名字可以增加语句的清晰度,即使有时候不是必须的。这个例子展示了一个外层查询的列名范围如何扩展到它的内层查询。

  • 相关阅读:
    AX2009直接交运的bug
    数据库日志
    新蛋中国最新的分类导航,右侧展开菜单,可以修改向左或者向右展开
    用图片代替滚动条的代码
    新蛋网的大图展示效果,缩略图点击显示大图,上一个下一个
    Banner 切换,大小图不同,支持FF和OPERA,IE系列
    下拉菜单,支持所有浏览器
    电容选型
    000.数字电子技术分类
    Altium design16设计技巧
  • 原文地址:https://www.cnblogs.com/bufuzhou/p/14244148.html
Copyright © 2020-2023  润新知