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)