SELECT * FROM SalesHistory
  WHERE EXISTS(SELECT NULL)
  SELECT * FROM SalesHistory
  WHERE 1 = 1
  SELECT * FROM SalesHistory
  WHERE EXISTS(SELECT 1)

在剛才的腳本中,你可能會(huì)對(duì)下面的語句感到迷惑:

以下是代碼片段:
    SELECT * FROM SalesHistory
  WHERE EXISTS(SELECT NULL)

因?yàn)镹ULL在數(shù)據(jù)庫中是一個(gè)值(它是一個(gè)未知的值),在出現(xiàn)NULL值的地方EXISTS結(jié)構(gòu)都將返回真。

開發(fā)者很少使用EXISTS對(duì)子查詢進(jìn)行操作。下面的查詢將返回同樣的結(jié)果集,雖然它們的結(jié)構(gòu)不同。第一個(gè)查詢使用了EXISTS的相關(guān)子查詢,第二查詢?cè)赟alesHistory表中,將SalePrice字段與該字段的總平均值進(jìn)行比較。

以下是代碼片段:
    SELECT * FROM SalesHistory sh
  WHERE EXISTS
  (
  SELECT AVG(SalePrice)
  FROM SalesHistory shi
  HAVING AVG(SalePrice) > sh.SalePrice
  )
  SELECT * FROM SalesHistory sh
  WHERE SalePrice <
  (
  SELECT AVG(SalePrice)
  FROM SalesHistory shi
  )
分享到

wangyao

相關(guān)推薦