带条件查询
在SELECT语句中,可以通过设置条件以达到更精确的查询。条件由表达式与操作符共同指定,且条件返回的值是TRUE,FALSE或UNKNOWN。
GaussDB 100当前支持的查询条件定义方式请参见• condition。查询条件可以应用于WHERE子句,HAVING子句和START WITH condition CONNECT BY [ NOCYCLE ] [ PRIOR ] condition子句。
语法格式
condition 子句:
select_statement { predicate } [ { AND | OR } condition ] [ , ... n ]
- predicate 子句:
{ expression { = | <> | != | > | >= | < | <= } { ALL | ANY } expression | ( select ) | string_expression [ NOT ] LIKE string_expression | expression [ NOT ] BETWEEN expression AND expression | expression IS [ NOT ] NULL | expression [ NOT ] IN ( select | expression [ , ... n ] ) | [ NOT ] EXISTS ( select ) }
使用方法
查询条件由表达式和操作符共同定义。GaussDB 100支持如下的条件定义方式:
- 比较操作符“>, <,>=,<=, !=, <>,=”指定的比较查询条件。
当查询条件中和数字比较,可以使用单引号引起,也可以不用,当和字符及日期类型的数据比较,则必须用单引号引起。请参见下方示例1。
- 测试运算符指定的范围查询条件。有关使用测试运算符进行的条件查询示例请参见测试运算符一节中的示例。
如果希望返回的结果必须满足多个条件,可以使用AND逻辑操作符连接这些条件;如果希望返回的结果满足多个条件之一即可,可以使用OR逻辑操作符连接这些条件。例如,下方示例2中,从staffs表中查询2000年后入职,且薪酬>5000的职员信息。
示例
- 示例1:使用比较操作符“>, <, >=, <=, !=,<>,=”来指定查询条件,例如查询学习课程SQL majorization的人员信息。
SELECT * FROM training WHERE course_name = 'SQL majorization';
STAFF_ID COURSE_NAME COURSE_START_DATE COURSE_END_DATE EXAM_DATE SCORE ------------ -------------------------------------------------- ---------------------- ---------------------- ---------------------- ------------ 10 SQL majorization 2017-06-15 12:00:00 2017-06-20 12:00:00 2017-06-25 12:00:00 90 1 rows fetched.
- 示例2:从staffs表中查询2000年后入职,且薪酬>5000的职员信息。
SELECT * FROM staffs WHERE HIRE_DATE>'2000-01-01 00:00:00' AND SALARY>'5000';
STAFF_ID FIRST_NAME LAST_NAME EMAIL PHONE_NUMBER HIRE_DATE EMPLOYMENT_ID SALARY COMMISSION_PCT MANAGER_ID SECTION_ID ---------------------------------------- -------------------- ------------------------- ------------------------- -------------------- ---------------------- ------------- ---------------------------------------- ---------------------------------------- ---------------------------------------- ---------------------------------------- 149 Eleni Zlotkey EZLOTKEY 011.44.1344.429018 2000-01-29 00:00:00 SA_MAN 10500 .2 100 80 164 Mattea Marvins MMARVINS 011.44.1346.329268 2000-01-24 00:00:00 SA_REP 7200 .1 147 80 165 David Lee DLEE 011.44.1346.529268 2000-02-23 00:00:00 SA_REP 6800 .1 147 80 166 Sundar Ande SANDE 011.44.1346.629268 2000-03-24 00:00:00 SA_REP 6400 .1 147 80 167 Amit Banda ABANDA 011.44.1346.729268 2000-04-21 00:00:00 SA_REP 6200 .1 147 80 173 Sundita Kumar SKUMAR 011.44.1343.329268 2000-04-21 00:00:00 SA_REP 6100 .1 148 80 179 Charles Johnson CJOHNSON 011.44.1644.429262 2000-01-04 00:00:00 SA_REP 6200 .1 149 80 7 rows fetched.
- 示例3:从staffs表和employment_history表中查看员工的姓名入职时间。
SELECT e.start_date,s.first_name,s.last_name FROM employment_history e, staffs s WHERE e.staff_id = s.staff_id;
START_DATE FIRST_NAME LAST_NAME ---------------------- -------------------- ------------------------- 1989-09-21 00:00:00 Neena Kochhar 1993-10-28 00:00:00 Neena Kochhar 1993-01-13 00:00:00 Lex De Haan 1998-03-24 00:00:00 Den Raphaely 1999-01-01 00:00:00 Payam Kaufling 1998-03-24 00:00:00 Jonathon Taylor 1999-01-01 00:00:00 Jonathon Taylor 1987-09-17 00:00:00 Jennifer Whalen 1994-07-01 00:00:00 Jennifer Whalen 1996-02-17 00:00:00 Michael Hartstein 10 rows fetched.
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」关注作者【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。评论