本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
WHERE 子句
WHERE 子句包含聯結資料表或將述詞套用至資料表中資料欄的條件。資料表可以在 WHERE子句或 FROM子句中使用適當的語法進行內部聯結。必須在 FROM子句中指定外部聯結條件。
語法
[ WHERE 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)