本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
WHERE 子句
该WHERE子句包含连接表或将谓词应用于表中的列的条件。通过在子WHERE句或子句中使用适当的语法,可以对表进行内联接。FROM必须在FROM子句中指定外部联接条件。
语法
[ WHERE condition ]
condition
任何具有布尔型结果的搜索条件,例如,联接条件或表列上的谓词。以下示例是有效的联接条件:
sales.listid=listing.listid sales.listid<>listing.listid
以下示例是表中的列上的有效条件:
catgroup like 'S%' venueseats between 20000 and 50000 eventname in('Jersey Boys','Spamalot') year=2008 length(catdesc)>25 date_part(month, caldate)=6
条件可以是简单条件或复杂条件;对于复杂条件,可以使用圆括号来分隔逻辑单元。在下面的示例中,用圆括号将联接条件括起来。
where (category.catid=event.catid) and category.catid in(6,7,8)
使用说明
可以在WHERE子句中使用别名来引用选择列表表达式。
您不能在WHERE子句中限制聚合函数的结果;为此请使用HAVING子句。
WHERE子句中受限制的列必须源自子FROM句中的表引用。
示例
以下查询使用不同WHERE子句限制的组合,包括SALES和EVENT表的联接条件、列上的谓词和EVENTNAME列上的STARTTIME两个谓词。
select eventname, starttime, pricepaid/qtysold as costperticket, qtysold from sales, event where sales.eventid = event.eventid and eventname='Hannah Montana' and date_part(quarter, starttime) in(1,2) and date_part(year, starttime) = 2008 order by 3 desc, 4, 2, 1 limit 10; eventname | starttime | costperticket | qtysold ----------------+---------------------+-------------------+--------- Hannah Montana | 2008-06-07 14:00:00 | 1706.00000000 | 2 Hannah Montana | 2008-05-01 19:00:00 | 1658.00000000 | 2 Hannah Montana | 2008-06-07 14:00:00 | 1479.00000000 | 1 Hannah Montana | 2008-06-07 14:00:00 | 1479.00000000 | 3 Hannah Montana | 2008-06-07 14:00:00 | 1163.00000000 | 1 Hannah Montana | 2008-06-07 14:00:00 | 1163.00000000 | 2 Hannah Montana | 2008-06-07 14:00:00 | 1163.00000000 | 4 Hannah Montana | 2008-05-01 19:00:00 | 497.00000000 | 1 Hannah Montana | 2008-05-01 19:00:00 | 497.00000000 | 2 Hannah Montana | 2008-05-01 19:00:00 | 497.00000000 | 4 (10 rows)